LeetCode 15. 三数之和
本文最后更新于630 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com


题目链接/文章讲解/视频讲解:https://programmercarl.com/0015.%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.html

1.我知道这个是梦碎的地方,不得不说这个题是真挺难,看题我其实没什么特别好的思路,就是能知道应该是要用个map 来出路这个0-(a+b)这样的操作,但是当我看到双指针法之后我还是觉得双指针法会更简单,更适合我一点,卡哥的视频我看了两遍,真的是很缜密的思路,这个题我日后应该会多做几遍,因为真的是不简单而且很考验思路是否严谨,我希望自己看待这些题以后可以更加缜密,而且我更希望下次这个题我靠自己的思路就可以 bug free,这是我希望看到的。

CPP

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> res;
        sort(nums.begin(),nums.end());

        for(int i = 0;i<nums.size();i++){
            if(nums[i]>0) return res;
            if(i>0 && nums[i] == nums[i-1]){
                continue;
            }
            int left = i+1;
            int right = nums.size()-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.push_back(vector<int>{nums[i],nums[left],nums[right]});

                    while(left<right && nums[right] == nums[right-1]) right--;
                    while(left<right && nums[left] == nums[left+1]) left++;

                    right--;
                    left++;
                }
            }
        }
        return res;
    }
};
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
Cream_dpl