三和HashMap方法

2024-09-29 01:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我不明白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))


Tags: innumbertargetforlenreturniftable
1条回答
网友
1楼 · 发布于 2024-09-29 01:21:35

当您到达最里面的循环时,有三种情况:

  • k == i← 这只能发生一次,因为i在列表中只能出现一次
  • k == j← 这只能发生一次,因为j在列表中只能出现一次
  • k != i and k != j← 这只能发生一次,因为一旦发生,您就会返回。(注意,代码实际上检查ijk三者是否都是不同的;但是我们已经知道i != j,因为ji + 1开始向上,所以这相当于只检查k != i and k != j。)

所以我们最多尝试三个值k;3确实是一个常数,正如所期望的

相关问题 更多 >