
python-三数之和
三数之和,给定一个包含n个整数的数组nums,判断nums中存在三个元素,abc ,之和为0,答案中不可以包含重复的三元祖。
·
采用排序加双指针
三数之和,给定一个包含n个整数的数组nums,判断nums中存在三个元素,abc ,之和为0,
答案中不可以包含重复的三元祖
nums=[-1,0,1,2,-1,4]
[[-1,-1,2],[-1,0,1]]
class ThirdSum:
def qiuHe(self, nums):
nums.sort()
print(nums)
list1 = []
for i in range(len(nums)):
if nums[0] > 0:
return list1
if i > 0 and nums[i] == nums[i - 1]:
continue # 如果两个相同的话,直接跳过,去重
# 控制左右两个指针
left = i + 1
right = len(nums) - 1
while left < right:
list2 = [] # 把三个数 的值存入到列表里
sum = nums[i] + nums[left] + nums[right]
if sum > 0:
right -= 1
elif sum < 0:
left += 1
elif sum == 0: # 如果三者之和为0
list2.append(nums[i])
list2.append(nums[left])
list2.append(nums[right])
list1.append(list2)
# 去重
# while right>left and nums[right]==nums[right-1]:right-=1
# while right > left and nums[left] == nums[left + 1]: left+=1
right -= 1
# left +=1
return list1
更多推荐
所有评论(0)