在 Python 中检查包含至少一个唯一元素的列表中的每个子列表的程序

假设我们有一个名为 nums 的元素列表,我们必须检查每个子列表中是否至少有 1 个元素在子列表中恰好出现一次。我们必须在线性时间内解决这个问题。

因此,如果输入类似于 nums = [5, 10, 20, 10, 0],那么输出将为 True,因为 nums 中的每个子列表至少有一个只出现过一次的元素。[[5], [10], [20], [10], [0], [5,10], [10,20], [20,10], [10,0], [5,10, 20], [10,20,10], [20,10,0], [5,10,20,10], [10,20,10,0], [5,10,20,10,0] ] 都至少有一个频率为 1 的元素。

示例

让我们看看以下实现以获得更好的理解 -

from collections import Counter

def solve(nums):

   def has_unique(left, right):

      if left >= right:

         return True

      counts = Counter(nums[left : right + 1])

      if min(counts.values()) > 1:

         return False

      start = left

      for index in range(left, right + 1):

         if counts[nums[index]] == 1:

            if not has_unique(start, index - 1):

               return False

            start = index + 1

      return has_unique(start, right)

   return has_unique(0, len(nums) - 1)

nums = [5, 10, 20, 10, 0]

print(solve(nums))

输入

[5, 10, 20, 10, 0]
输出结果
True

以上是 在 Python 中检查包含至少一个唯一元素的列表中的每个子列表的程序 的全部内容, 来源链接: utcz.com/z/343679.html

回到顶部