15. 3Sum

public class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        Arrays.sort(nums);
        List<List<Integer>> res=new ArrayList<>();
        for(int i=0;i<nums.length-2;i++){
            if(i==0||(i>0&&nums[i]!=nums[i-1])){
                int lo=i+1,hi=nums.length-1,sum=0-nums[i];
                while(lo<hi){
                    if(nums[lo]+nums[hi]==sum){
                        res.add(Arrays.asList(nums[i],nums[lo],nums[hi]));
                        while(lo<hi&&nums[lo]==nums[lo+1]) lo++;
                        while(lo<hi&&nums[hi]==nums[hi-1]) hi--;
                        lo++;hi--;
                    }else if(nums[lo]+nums[hi]<sum) lo++;
                    else hi--;
                }
            }
        }
        return res;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 注意要跳過重復。把每個element 看成三個數(shù)中的一個,然后在這個數(shù)后面剩余的數(shù)里,從最大和最小的數(shù)開始做2sum.
    沉睡至夏閱讀 177評論 0 0
  • Medium刷狗家題庫看到的類似的,這個題里面去duplicates的地方值得好好想一想。 為什么我們只在if (...
    greatseniorsde閱讀 190評論 0 0
  • 題目 給出一個有n個整數(shù)的數(shù)組S,在S中找到三個整數(shù)a, b, c,找到所有使得a + b + c = 0的三元組...
    六尺帳篷閱讀 232評論 0 1
  • 題目描述:給定一個有n個整數(shù)的數(shù)組S,找到其中所有由三個數(shù)a、b、c組成,使得a + b + c = 0的三元組。...
    Nautilus1閱讀 87評論 0 0
  • 01.多年前的疑問 昨晚一老同學在微信上跟我回首當年的友情?;貞浧甬斈辏柗Q班級的“數(shù)學王子”,幾乎沒有他解不開...
    淡之閱讀 401評論 2 15

友情鏈接更多精彩內(nèi)容