AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 更多
    • 题解
    • 分享
    • 商店
    • 吐槽
  • App
  • 登录/注册

三数之和

作者: 作者的头像   Jiarui.X ,  2023-09-19 15:18:51 ,  所有人可见 ,  阅读 32


2


class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& a) {
        vector<vector<int>> ans;
        int n = a.size();
        sort(a.begin(), a.end());
        for (int i = 0; i < n - 2; i ++) {
            int x = a[i];
            if(i && x == a[i - 1]) continue;
            if(x + a[i + 1] + a[i + 2] > 0) break;
            if(x + a[n - 1] + a[n - 2] < 0) continue;
            int j = i + 1, k = n - 1;
            while(j < k) {
                int sum = x + a[j] + a[k];
                if(sum > 0) -- k;
                else if(sum < 0) ++ j;
                else {
                    ans.push_back({x, a[j], a[k]});
                    ++ j;
                    while(j < k && a[j] == a[j - 1]) ++ j;
                    -- k;
                    while(k > j && a[k] == a[k + 1]) -- k;
                }
            }
        }   
        return ans; 
    }
};

0 评论

你确定删除吗?
1024
x

© 2018-2023 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息