zoukankan      html  css  js  c++  java
  • 4Sum

        求数组中和为target的4个数,结果的4个数是非降序,结果集合不能有重复。跟3Sum一样的解法。

    vector<vector<int> > fourSum(vector<int> &num, int target) 
    {
        vector<vector<int> > ret;
        
        if (num.size() == 0) return ret;
        
        sort(num.begin(), num.end());
        
        for (size_t a = 0; a < num.size(); ++a)
        {
            if (a != 0 && num[a] == num[a - 1])
            {
                continue;
            }
            
            for (size_t b = a + 1; b < num.size(); ++b)
            {
                if (b != a + 1 && num[b] == num[b - 1])
                {
                    continue;
                }
                
                size_t c = b + 1;
                size_t d = num.size() - 1;
                
                while (c < d)
                {
                    const int sum = num[a] + num[b] + num[c] + num[d];
                    
                    if (sum > target)
                    {
                        --d;
                    }
                    else if (sum < target)
                    {
                        ++c;
                    }
                    else if (c != b + 1 && num[c] == num[c - 1])
                    {
                        ++c;
                    }
                    else if (d != num.size() - 1 && num[d] == num[d + 1])
                    {
                        --d;
                    }
                    else
                    {
                        vector<int> result;
                        
                        result.push_back(num[a]);
                        result.push_back(num[b]);
                        result.push_back(num[c]);
                        result.push_back(num[d]);
                        
                        ret.push_back(result);
                        
                        ++c;
                        --d;
                    }
                }
            }
        }
        
        return ret;
    }
  • 相关阅读:
    ZOJ 3705 Applications
    UVA 220 Othello
    HDU 2084 数塔
    第五章:变量
    第四章:注释
    第三章:程序结构
    第二章:项目的创建和环境熟悉
    第一章:c#开发环境安装
    处理字段串
    查询表的列信息
  • 原文地址:https://www.cnblogs.com/codingmylife/p/2664448.html
Copyright © 2011-2022 走看看