当前位置: 代码迷 >> 综合 >> LeetCode 15. 3Sum
  详细解决方案

LeetCode 15. 3Sum

热度:17   发布时间:2024-02-01 07:58:05.0

LeetCode 15

3sum的问题,如果先确定一个数,那么我们就可以转为2sum的问题。根据这个思路,我们先排序数组,然后确定一个数,然后就在剩下的数组中寻找2sum的答案。

要注意的一点是,如果有相同的数已经处理过了,我们可以跳过

    def threeSum(self, nums: List[int]) -> List[List[int]]:nums.sort()n = len(nums)result = []for i in range(n):if i > 0 and nums[i] == nums[i-1]: continuetarget = - nums[i]start, end = i+1, n-1while start < end:                if nums[start] + nums[end] < target:start +=1while nums[start] == nums[start-1]:start+=1elif nums[start] + nums[end] > target:end -=1while nums[end] == nums[end+1]:end -=1else:result.append([nums[i], nums[start], nums[end]])start+=1end -=1while nums[start] == nums[start-1]:start+=1while nums[end] == nums[end+1]:end -=1return result