嗨,我不明白k-环是怎么定时间的。如果数组是[4,4,4,4,4,4],目标是12,那么数字_表[4]=[0,1,2,3,4,5],然后k循环将迭代五次no?问自己我,j和k是否都不同。。。这段视频似乎不是这样说的video
def three_sum(nums, target):
number_table = {}
for i in range(len(nums)):
if nums[i] in number_table.keys():
number_table[nums[i]].append(i)
else:
number_table[nums[i]] = []
for i in range(len(nums) - 1):
for j in range(i + 1, len(nums)):
partial_target = target - nums[i] - nums[j]
for k in number_table[partial_target]:
if len(set((i,j,k))) == 3:
return (nums[i], nums[j], nums[k])
return None
numbers = [4,4,4,4,4,4]
target = 12
three_sum(numbers, target)
print(three_sum(numbers,target))
当您到达最里面的循环时,有三种情况:
k == i
← 这只能发生一次,因为i
在列表中只能出现一次李>k == j
← 这只能发生一次,因为j
在列表中只能出现一次李>k != i and k != j
← 这只能发生一次,因为一旦发生,您就会返回。(注意,代码实际上检查i
、j
和k
三者是否都是不同的;但是我们已经知道i != j
,因为j
从i + 1
开始向上,所以这相当于只检查k != i and k != j
。)所以我们最多尝试三个值
k
;3确实是一个常数,正如所期望的相关问题 更多 >
编程相关推荐