件名:https : //leetcode-cn.com/problems/3sum/
回答:ダブルポインタ
public List <List <Integer >> threeSum(int [] nums){
Arrays.sort(nums);
int len = nums.length;
List <List <Integer >> result = new ArrayList <>();
for(int i = 0; i <len; i ++){
if(i> 0 && nums [i] == nums [i-1]){
継続する;
}
if(nums [i]> 0)ブレーク;
int right = len-1;
int target = -nums [i];
for(int left = i + 1; left <len; left ++){
if(left> i + 1 && nums [left] == nums [left-1]){
継続する;
}
if(nums [i] + nums [left]> 0)ブレーク;
while(left <right && nums [left] + nums [right]> target){
正しい - ;
}
if(left == right)break;
if(nums [左] + nums [右] ==ターゲット){
List <Integer> list = new ArrayList <>();
list.add(nums [i]);
list.add(nums [left]);
list.add(nums [right]);
result.add(list);
}
}
}
結果を返す;
}