《LeetCode力扣练习》代码随想录——哈希表(三数之和—Java)
刷题思路来源于
代码随想录
15. 三数之和
-
排序双指针
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> result=new ArrayList<>();
if(nums.length==3&&nums[0] + nums[1] + nums[2] == 0){
result.add(Arrays.asList(nums[0], nums[1], nums[2]));
return result;
}
Arrays.sort(nums);
for(int i=0;i<nums.length;i++){
if(nums[0]>0){
return result;
}
if(i>0&&nums[i]==nums[i-1]){
continue;
}
int left=i+1;
int right=nums.length-1;
while(left<right){
int temp=nums[i]+nums[left]+nums[right];
if(temp>0){
right--;
}else if(temp<0){
left++;
}else{
result.add(Arrays.asList(nums[i],nums[left],nums[right]));
while(left<right&&nums[left]==nums[left+1]){
left++;
}
left++;
while(left<right&&nums[right]==nums[right-1]){
right--;
}
right--;
}
}
}
return result;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)