今天分享的是三数之和
题目描述:
第一个输入是一个整数列表其中包含不重复的数字,第二个输入是目标数字。需要用列表中的三个数字相加来达这个目标数字。需要返回的是达成这个目标数字所使用的三个数字。
解题思路:
解题思路主要可以将三数之和转换成二数之和来做,第一个指针是用来循环整个数组,剩下两个数字可以用两数之和的解题方法来解决。
更详细的分析后续会发布,最近忙着复习考试,不好意思
class Solution:
def threeSum(self, nums):
nums = sorted(nums)
result = []
for i in range(len(nums) -2):
if i >= 1 and nums[i] == nums[i -1]:
continue
left = i + 1
right = len(nums) -1
# 只要记录第一个-2 0 2 后面的全部可以跳过
count = i
while left < right:
if count !=0:
if left > len(nums) and nums[left] == nums[left -1]:
left += 1
continue
if right < len(nums) - 1 and nums[right] == nums[right +1]:
right -=1
continue
current_sum = nums[i] + nums[left] + nums[right]
if current_sum >0:
right -=1
elif current_sum <0:
left +=1
else:
result.append([nums[i], nums[left], nums[right]])
left += 1
right -= 1
count += 1
return result