zoukankan      html  css  js  c++  java
  • leetcode[15]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:

    • Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)
    • 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> &num) {
        vector<vector<int>> res;
        if(num.size()<3) return res;
        sort(num.begin(),num.end());
        for(int i=0;i<num.size();i++)
        {
            if((i>0)&&(num[i]==num[i-1]))
            {
                continue;
            }
            int j=i+1;
            int k=num.size()-1;
            while(j<k)
            {
                if((j>i+1)&&(num[j]==num[j-1]))
                {
                    j++;
                    continue;
                }
                if((k<num.size()-1)&&(num[k]==num[k+1]))
                {
                    k--;
                    continue;
                }
                int sum=num[i]+num[j]+num[k];
                if(sum<0)j++;
                else if(sum>0)k--;
                else 
                {
                    vector<int> temp;
                    temp.push_back(num[i]);
                    temp.push_back(num[j]);
                    temp.push_back(num[k]);
                    res.push_back(temp);
                    j++;
                    k--;
                }
            }
        }
        return res; 
        }
    };
  • 相关阅读:
    oracle grant 授权语句
    c# dllimport c++数据类型映射关系
    DJ下载工具
    防抖和节流
    事件处理的三个阶段
    tomcat
    java 中的xml操作
    数据库连接池
    jdbc
    Java 注解
  • 原文地址:https://www.cnblogs.com/Vae1990Silence/p/4283686.html
Copyright © 2011-2022 走看看