题解 | 三数之和

三数之和

https://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711

#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型vector 
     * @return int整型vector<vector<>>
     */
    vector<vector<int>> threeSum(vector<int>& num) {
        // write code here
         vector<vector<int>> res;
         int n=num.size();
         if(num.size()<3)
         {
            return res;
         }
         //先对数组进行排序
         sort(num.begin(),num.end());
         if(num[0]>0||num[n-1]<0)
         {
            return res;
         }
        //
        for(int i=0;i<n-2;i++)
        {
            if(i>0&&num[i]==num[i-1])
            {
                continue;
            }
            int j=i+1;
            int k=n-1;
            while(j<k)
            {
                int sum=num[k]+num[j]+num[i];
                if(sum==0)
                {
                     vector<int> temp;
                     temp.push_back(num[i]);
                     temp.push_back(num[j]);
                     temp.push_back(num[k]);
                     res.push_back(temp);
                     while(j<k&&num[j]==num[j+1])
                     {
                        j++;
                     }
                      while(j<k&&num[k]==num[k-1])
                     {
                        k--;
                     }
                     j++;
                     k--;
                     continue;
                }
                else if(sum<0)
                {
                   j++;
                }
                else 
                {
                   k--;
                }
            }
        }
        return res;
    }
};

全部评论

相关推荐

ddd7_:跟我一模一样,加微信的hr都同一个,扫码了白年书人查看图片
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务