class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> arr = new ArrayList();
if (nums.length == 0){ // 輸入爲空 return arr; }
Arrays.sort(nums); //排序
int j =0;
int k =0;
for(int i = 0;i<nums.length;i++){
if(i > 0&&nums[i] == nums[i-1]){continue;} // 去重
j= i+1;
k = nums.length-1;
while(j<k){
if(nums[j] + nums[k] ==-nums[i]){
List<Integer> cur = new ArrayList();
cur.add(nums[k]);
cur.add(nums[j]);
cur.add(nums[i]);
arr.add(cur);
while( j<k && nums[j] == nums[j+1]){j++;}
while( j<k && nums[k] == nums[k-1] ){k--;}
k--;
j++;
}
else if(nums[j] + nums[k]<-nums[i]){
j++; }
else{ k--; }
}
}
return arr;
}}
leetcode刷題(30天)-15. 三數之和
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.