假设我们有一个称为nums的数字列表,我们必须找到最长的连续子列表的长度,其中所有元素都是唯一的。
因此,如果输入类似于nums = [6、2、4、6、3、4、5、2],则输出将为5,因为唯一元素的最长列表为[6、3、4、5 ,2]。
为了解决这个问题,我们将遵循以下步骤-
head:= 0,dct:=新映射
max_dist:= 0
对于每个索引i和以num为单位的num元素,执行
max_dist:= i-头+ 1
头:= dct [num] + 1
如果num在dct中并且dct [num]> = head,则
dct [num]:= i
如果我-head + 1> max_dist,则
返回max_dist
让我们看下面的实现以更好地理解-
class Solution: def solve(self, nums): head = 0 dct = {} max_dist = 0 for i, num in enumerate(nums): if num in dct and dct[num] >= head: head = dct[num] + 1 dct[num] = i if i - head + 1 > max_dist: max_dist = i - head + 1 return max_dist ob = Solution()nums = [6, 2, 4, 6, 3, 4, 5, 2] print(ob.solve(nums))
[6, 2, 4, 6, 3, 4, 5, 2]
输出结果
5