LeetCode(18) 4Sum

来源:互联网 发布:8051单片机有什么用 编辑:程序博客网 时间:2024/04/25 20:18

仅仅是记录一下

class Solution {public:    vector<vector<int>> fourSum(vector<int>& nums, int target) {        sort(nums.begin(), nums.end());        vector<vector<int>> result;        int length = nums.size();        for(int i = 0; i < length - 3; ) {            int firstTarget = target - nums[i];            for(int j = i + 1; j < length - 2; ) {                int secondTarget = firstTarget - nums[j];                int m = j + 1;                int n = length - 1;                while(m < n) {                    if(nums[m] + nums[n] == secondTarget) {                        vector<int> tmp;                        tmp.push_back(nums[i]); tmp.push_back(nums[j]); tmp.push_back(nums[m]); tmp.push_back(nums[n]);                        result.push_back(tmp);                        m++;                        while(m < n && nums[m] == nums[m - 1]) m++;                        n--;                        while(m < n && nums[n] == nums[n + 1]) n--;                    }                    if(nums[m] + nums[n] < secondTarget) {                        m++;                        //while(m < n && nums[m] == nums[m - 1]) m++;                    }                    if(nums[m] + nums[n] > secondTarget) {                        n--;                        //while(m < n && nums[n] == nums[n + 1]) n--;                    }                }                j++;                while(j < length - 2 && nums[j] == nums[j - 1]) j++;            }            i++;            while(i < length - 3 && nums[i] == nums[i - 1]) i++;        }        return result;    }};
0 0