企业网站策划方案网站建设方案,黎平网站建设,创办一个网站要多少钱,公司营销型网站建设策划书三数之和
给你一个整数数组 nums #xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k #xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。
请你返回所有和为 0 且不重复的三元组。
注意#xff1a;答案中不可以包含重复的三元组…三数之和
给你一个整数数组 nums 判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k 同时还满足 nums[i] nums[j] nums[k] 0 。
请你返回所有和为 0 且不重复的三元组。
注意答案中不可以包含重复的三元组。
输入nums [-1,0,1,2,-1,-4]
输出[[-1,-1,2],[-1,0,1]]
解释
nums[0] nums[1] nums[2] (-1) 0 1 0 。
nums[1] nums[2] nums[4] 0 1 (-1) 0 。
nums[0] nums[3] nums[4] (-1) 2 (-1) 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意输出的顺序和三元组的顺序并不重要。class Solution:def threeSum(self, nums: List[int]) - List[List[int]]:result [] # sort() 一下就很灵性啊nums.sort()for i in range(len(nums)):if nums[i] 0:breakif i 0 and nums[i] nums[i-1]:continueleft i 1right len(nums) - 1while left right:if nums[i] nums[left] nums[right] 0:right - 1elif nums[i] nums[left] nums[right] 0:left 1else:# 先把这个结果给加上再考虑left和right去重的问题result.append([nums[i], nums[left], nums[right]])left 1right - 1# 开始处理left和right的去重细节# 这里也类似前面的i, 要和之前已经处理过的数据比较# 这里同时要保证left小于right不然容易越界也没必要做任何操作# 这里要用while处理因为可能连续的好几个while left right and nums[left] nums[left-1]:left 1while left right and nums[right] nums[right1]:right - 1return result