zoukankan      html  css  js  c++  java
  • LeetCode OJ--4Sum *

    https://oj.leetcode.com/problems/4sum/

    在一个数列中,找出所有的4个数,它们的和是target.

    class Solution {
    public:
        vector<vector<int> > fourSum(vector<int> &num, int target)  {
            vector<vector<int> > ans;
            if(num.size()<4)
                return ans;
    
            sort(num.begin(),num.end());
            for(int i = 0;i<num.size()-3;i++)
            {
                if(i>0 && num[i]==num[i-1])
                    continue;
                 
                calcThree(num,target - num[i],i,ans);
            }
            return ans;
        }
        void calcThree(vector<int> &num,int threeSum,int firstPosition,vector<vector<int> > &ans)
        {
            int k = 0;
    
            for(int i = firstPosition+1;i<num.size()-2;i++)
            {
                if(i>firstPosition+1 && num[i] == num[i-1])
                    continue;
                int j = i+1;
     
                k = num.size()-1;
                
                while(j<k)
                {
                    if(num[i]+num[j]+num[k] == threeSum)
                    {
                        if(ans.size()==0 || ans.size()>0 && !(num[firstPosition] == ans[ans.size()-1][0] && num[i]==ans[ans.size()-1][1]&& num[j] ==ans[ans.size()-1][2] ))
                        {
                            vector<int> ansPiece;
                            ansPiece.push_back(num[firstPosition]);
                            ansPiece.push_back(num[i]);
                            ansPiece.push_back(num[j]);
                            ansPiece.push_back(num[k]);                    
                            ans.push_back(ansPiece);
                        }
                        j++;
                    }
                    else if(num[i]+num[j]+num[k] < threeSum)
                        j++;
                    else
                        k--;
                }
            }
        }
    };
  • 相关阅读:
    R()函数的使用 tp2
    __call()的使用
    tp3.1.3 引入静态页面
    tp3.1.3创建应用
    .env文件的使用 thinkphp51
    concat()和push()的区别
    小程序模板template使用
    56. 从1到n整数中1出现的次数
    55. 连续子数组的最大和
    54. 数据流中的中位数
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3803630.html
Copyright © 2011-2022 走看看