天河营销型网站建设,个人网页制作与网站建设,网站建设在线商城,大理州住房和城乡建设局网站一:题目 二:上码 class Solution {
public:/**思路:1.这个跟三数之和差别在于本题加了一层循环,就是我们将第二层循环加在了我们遍历的第一个元素的后面2.其他跟三数之和解题思路一样*/vectorvectorint fourSum(vectorint nums, int target) {vec…一:题目 二:上码 class Solution {
public:/**思路:1.这个跟三数之和差别在于本题加了一层循环,就是我们将第二层循环加在了我们遍历的第一个元素的后面2.其他跟三数之和解题思路一样*/vectorvectorint fourSum(vectorint nums, int target) {vectorvectorint ans;sort(nums.begin(),nums.end());for (int i 0; i nums.size(); i) {if (i 0 nums[i] nums[i-1]) continue;//去重处理//这里不能是 nums[i] nums[i1]//因为这样的话我们就会错过 -1 -1 1 1 taget 0for (int j i1; j nums.size(); j) {if ( j i1 nums[j] nums[j-1]) continue;int left j1;int right nums.size()-1;while (left right) {if (nums[i]nums[j] target - (nums[left]nums[right])) {right--;} else if (nums[i]nums[j] target - (nums[left]nums[right])) {left;} else {ans.push_back({nums[i],nums[j],nums[left],nums[right]});while (left right nums[left] nums[left1]) left;while (left right nums[right] nums[right-1]) right--;//上方的去重只是去重到不相同的元素的上一个元素。left;right--;}}}}return ans;}
};