您的位置:首页 > 编程语言 > C语言/C++

每日进步之leetcode15题C++实现代码

2016-07-28 22:35 876 查看
15题实现思路在于 先将3个数 转换为2个数求第三个数的问题,注意去重

class Solution {

public:

    vector<vector<int>> threeSum(vector<int>& nums) {

        

        vector<vector<int>> ver;

        sort(nums.begin(), nums.end());

        int len = nums.size();

        for( int i = 0; i < len-2; ++i)

        {

            if(i > 0 && nums[i] == nums[i-1])

            {

                continue;

            }

            int begin = i + 1;

            int end = len -1;

            while(begin < end)

            {

                if(nums[i] + nums[begin] + nums[end] == 0)

                {

                    vector<int> tmp;

                    tmp.push_back(nums[i]);

                    tmp.push_back(nums[begin]);

                    tmp.push_back(nums[end]);

                    ver.push_back(tmp);

                    do

                    {

                        ++begin;

                    }while(nums[begin-1] == nums[begin]);

                    

                    do

                    {

                        --end;

                    }while(nums[end] == nums[end + 1]);

                    

                }else if ( nums[begin] + nums[end] + nums[i] > 0)

                {

                    --end;

                }else{

                    ++begin;

                }

                

            }

        }

        return ver;

    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: