zoukankan      html  css  js  c++  java
  • leetcode -- 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)

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    class Solution {
        vector<vector<int> > ret;
    public:
        void helper(vector<int> &num,vector<int>::size_type  base)
        {
          vector<int>::size_type  left = base + 1;
          vector<int>::size_type  right = num.size() - 1;
          int com = num[base] * (-1);
    
          while(left < right)
          {
            int temp = num[left] + num[right];
            if( temp > com )
                right--;
            else if(temp < com)
                left++;
            else
                {
                  vector<int> t;
                  t.push_back(num[base]);t.push_back(num[left]);t.push_back(num[right]);
                  ret.push_back(t);
                  right--;left++;
                }
          }
        
        }
        vector<vector<int> > threeSum(vector<int> &num) {
            sort(num.begin(),num.end()); ///进行排序,运用迭代器~
            for(vector<int>::size_type i = 0;i< num.size();i++)
                if(i > 0 && num[i] == num[i -1])
                 continue;
                else 
                 helper(num,i);
            return ret; 
        }
    };
    
    int main()
    {
      vector<int > t;
      t.push_back(-1);t.push_back(0);t.push_back(1);t.push_back(2);t.push_back(-1);t.push_back(-4);
    
      Solution s;
      vector<vector<int> > v = s.threeSum(t);
    
      cout<<v.size();
    }
  • 相关阅读:
    win10下安装为知笔记的markdown插件
    最近一段时间的工作状态
    C++中的取余与取模
    来新项目后,最心虚的一个夜晚
    g++添加支持c++11的选项
    Linux ssh远程登陆方式:密码与公钥
    判断脚本加载完成
    解决ie6下最小高度问题
    display:inline-block的深入理解
    ff下button按钮上的文字垂直居中
  • 原文地址:https://www.cnblogs.com/berkeleysong/p/3754889.html
Copyright © 2011-2022 走看看