程序查找Python中最长的不同子列表的长度

假设我们有一个称为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