目录
双指针模板题目三数之和
双指针
模板
题目
三数之和
注意 重复元素判断,边界问题
public List
<List
<Integer>> threeSum(int[] nums
) {
Arrays
.sort(nums
);
int len
= nums
.length
;
int left
= 0,right
= 0;
List
<List
<Integer>> res
= new ArrayList<>();
for (int i
= 0; i
< len
; i
++) {
if (i
>0&&nums
[i
]==nums
[i
-1])continue;
if (nums
[i
]>0)break;
left
= i
+1;
right
=len
-1;
while (left
<right
){
if ((nums
[i
]+nums
[left
]+nums
[right
])>0){
right
--;
}else if ((nums
[i
]+nums
[left
]+nums
[right
]<0)){
left
++;
}else {
res
.add(new ArrayList<Integer>(Arrays
.asList(new Integer[]{nums
[i
],nums
[left
],nums
[right
]})));
while (left
<right
&&nums
[left
]==nums
[left
+1])left
++;
while (left
<right
&&nums
[right
]==nums
[right
-1])right
--;
left
++;
right
--;
}
}
}
return res
;
}
```
转载请注明原文地址: https://lol.8miu.com/read-27981.html