在 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