自己做的网站怎么绑域名,苏州工业园区质安监站网址,长安城乡建设开发有限公司网站,哈尔滨企业网站暴力搜索3次方的时间复杂度#xff0c;大抵超时
遇到不会先排序
排序双指针
上题解 照做
class Solution:def threeSum(self, nums: List[int]) - List[List[int]]:res[]nlen(nums)#排序降低复杂度nums.sort()k0#留两个位置给双指针i,jfor k in range(n-2):if nums[k]…
暴力搜索3次方的时间复杂度大抵超时
遇到不会先排序
排序双指针
上题解 照做
class Solution:def threeSum(self, nums: List[int]) - List[List[int]]:res[]nlen(nums)#排序降低复杂度nums.sort()k0#留两个位置给双指针i,jfor k in range(n-2):if nums[k]0:break#比较其和前一个元素是否相等相等则跳过防止重复if k0 and nums[k]nums[k-1]:continueik1jn-1while ij:sumnums[k]nums[i]nums[j]if sum0:i1#同样的结果了while ij and nums[i]nums[i-1]:i1elif sum0:j-1#一样while ij and nums[j]nums[j1]:j-1else:res.append([nums[k],nums[i],nums[j]])i1j-1#samewhile ij and nums[i]nums[i-1]:i1while ij and nums[j]nums[j1]:j-1return res过 总结
数组排序固定一个数开始双指针第一个指针紧随其后第二个指针逆序剪枝包括与前面的元素相比有没有相同相同则跳过每次移动i/j都可以考虑刚刚那步的剪枝