Python程序:查找最长不重复子列表的长度


假设我们有一个名为nums的数字列表,我们需要找到其中所有元素都唯一的最大连续子列表的长度。

例如,如果输入为nums = [6, 2, 4, 6, 3, 4, 5, 2],则输出为5,因为最长的唯一元素列表是[6, 3, 4, 5, 2]。

为了解决这个问题,我们将遵循以下步骤:

  • head := 0,dct := 一个新的映射

  • max_dist := 0

  • 对于nums中的每个索引i和元素num,执行以下操作:

    • 如果num在dct中并且dct[num] >= head,则

      • head := dct[num] + 1

    • dct[num] := i

    • 如果i - head + 1 > max_dist,则

      • max_dist := i - head + 1

  • 返回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

更新于:2020年10月10日

328 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告