zoukankan      html  css  js  c++  java
  • 3Sum

    Given an array S of n integers, are there elements abc in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

    Note: The solution set must not contain duplicate triplets.

    For example, given array S = [-1, 0, 1, 2, -1, -4],
    
    A solution set is:
    [
      [-1, 0, 1],
      [-1, -1, 2]
    ]


    class Solution{
    public:
        vector<vector<int>> threeSum(vector<int> & nums){
            vector<vector<int>> res;
            if(nums.size() < 3)
                return res;
    
            sort(nums.begin(),nums.end());
    
            for(size_t i=0;i<nums.size();i++){
                int target = -nums[i];
                int front = i + 1;
                int back = nums.size()-1;
                while(front < back){
                    if(nums[front] + nums[back] < target)
                        front++;
                    else if(nums[front] + nums[back] > target)
                        back--;
                    else{
                        res.push_back({nums[i],nums[front],nums[back]});
                        while(front < back && res.back()[1]==nums[front])
                            front++;
                        while(front < back && res.back()[2]==nums[back])
                            back--;
                    }
                }
                while(i+1 < nums.size() && nums[i+1] == nums[i])
                    i++;
            }
            return res;
        }
    };
  • 相关阅读:
    VS Code 调试报错
    Nginx反向代理设置
    Nginx 的配置文件
    Nginx 的常用的命令
    CentOS7安装Nginx
    Docker配置
    Centos7 安装MySQL 5.7
    限制Redis使用的最大内存
    C#操作Redis
    Font Awesome 字体图标
  • 原文地址:https://www.cnblogs.com/wxquare/p/5921981.html
Copyright © 2011-2022 走看看