标签:
C++ STL sort原理与用法:
//待补充...
vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> result; sort(nums.begin(),nums.end()); for(int i=0;i<nums.size();i++) { int begin=i+1; int end=nums.size()-1; while(begin<end) { int sum=nums[i]+nums[begin]+nums[end]; if(sum==0) { vector<int> triple(3); triple[0]=nums[i]; triple[1]=nums[begin]; triple[2]=nums[end]; result.push_back(triple); //为了防止返回重复的结果 while(begin<end&&nums[begin]==triple[1]) begin++; while(begin<end&&nums[end]==triple[2]) end--; } else if(sum>0) end--; else begin++; } //重复的元素不必再重新求解,节省时间,不然会timeout while(nums[i+1]==nums[i]&&i<nums.size()) i++; } return result; }
**一定要注意边界条件的限制
标签:
原文地址:http://www.cnblogs.com/summerkiki/p/5462938.html