three sum

作者: yanyuchen | 来源:发表于2017-06-02 07:24 被阅读0次

    这题就是sort之后用2 points (while)注意要去重来着。

    public class Solution {    

    public List> threeSum(int[] A) {    int target = 0;List>res = new ArrayList>();if (A == null || A.length < 2)return res;Arrays.sort(A);    for(int i = 0; i< A.length - 2; i++){    if(i > 0 && A[i] == A[i-1]) {        continue;    }        int start = i + 1;    int end = A.length - 1;    while(start < end){        int sum = A[start] + A[end] + A[i];        if(sum < target){            start++;            continue;        }        if(sum > target){            end--;            continue;        }        if(sum == target){            Listtemp = new ArrayList<>();

    temp.add(A[start]);

    temp.add(A[end]);

    temp.add(A[i]);

    res.add(temp);

    while(start + 1 < end &&A[start] == A[start+1]) start++; //duplicate

    while(end-1 > start &&A[end] == A[end -1])  end--;

    start++;

    end--;

    continue;

    }

    start++;

    end--;

    }

    }

    return res;

    }

    }

    相关文章

      网友评论

          本文标题:three sum

          本文链接:https://www.haomeiwen.com/subject/etmyfxtx.html