領釦題庫18題:四數之和
阿新 • • 發佈:2019-01-26
C++暴力求解,在三數之和的基礎上增加一個迴圈 。(非正確答案,只是提供一下暴力求解的原理)
class Solution { public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int> > result; vector<int>temp; int len=nums.size(); if(len<=3) return result;//陣列元素小於4,退出 sort(nums.begin(),nums.end());//排序 int m=0; int i,j,k,l,sum; for( i=0;i<nums.size()-3;i++){ if(nums[i]>0) break;//如果元素大於0,退出 if(nums[i]==nums[i-1&&i>0])continue;//遇到重複元素,退出當前迴圈 for( j=i+1;j<nums.size()-2;j++){ if(nums[j]==nums[j-1]&j>i+1)continue;//遇到重複元素,退出當前迴圈 for( k=j+1;k<nums.size()-1;k++){ if(nums[k]==nums[k-1]&k>j+1)continue;//遇到重複元素,退出當前迴圈 for(l=k+1;l<nums.size();l++){ sum=nums[i]+nums[j]+nums[k]+nums[l]; if(target==sum){ temp.push_back(nums[i]); temp.push_back(nums[j]); temp.push_back(nums[k]); temp.push_back(nums[l]); result.push_back(temp); temp.clear(); } } } } } return result; } };