16. 3Sum Closest

来源:互联网 发布:手机照片怎么导入mac 编辑:程序博客网 时间:2024/06/07 10:03

这道题是自己纯敲的哟!(骄傲脸)而且很快呐才12ms!

不过也敲了很久就是了……

一开始以为和3sum差不多……后来发现各种不一样……还忘记了自己是sort过才开始找的,结果在纸上写出来的结果各种不对……

一开始没有给r赋初值,也没有考虑到j和k的更新条件。其实主要是j和k的更新条件没有考虑好,改了好几次,一开始防止duplicate的while循环也没有放进if里面,反正就是各种改啦……

class Solution {public:    int threeSumClosest(vector<int>& nums, int target) {                 sort(nums.begin(), nums.end());           int r=nums[0]+nums[1]+nums[nums.size()-1];                  int i,j,k,n=1;          for(i=0;i<nums.size();i++){                            while(i!=0&&nums[i]==nums[i-1]) i++;              j=i+1;              k=nums.size()-1;                          while(j<k){                    int sum=nums[i]+nums[j]+nums[k];                if(sum==target) return target;                if(abs(sum-target)<abs(r-target)) r=sum;                                if(sum>target) {k--;while(k > j && nums[k] == nums[k+1]) k --;}                else {j++;while(j < k && nums[j] == nums[j-1]) j ++;}                        }                            }               return r;          } };


0 0
原创粉丝点击