leetcode_four_sum 发表于 2016-11-23 难度:Medium解题思路:可以按照3Sum的思路来。代码如下。 1234567891011121314151617181920212223242526272829303132333435363738394041class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int>> ret; if(nums.size()<4) return ret; sort(nums.begin(),nums.end()); for(int i = 0; i < nums.size()-3; i++) { if(i!=0 && nums[i]==nums[i-1]) continue; for(int j = i+1; j < nums.size()-2; j++) { if(j!=i+1 && nums[j]==nums[j-1]) continue; int low = j+1; int high = nums.size()-1; while(low < high) { if(low != j+1 && nums[low]==nums[low-1]) { low++; continue; } if(high != nums.size()-1 && nums[high]==nums[high+1]){ high--; continue; } int sum = nums[i]+nums[j]+nums[low]+nums[high]; if(sum == target) { ret.push_back({nums[i],nums[j],nums[low],nums[high]}); high--; } else if(sum > target) high--; else low++; } } } return ret; }};