Leetcode: 3Sum Closest

来源:互联网 发布:毛概网络课程答案 编辑:程序博客网 时间:2024/05/18 18:45

http://oj.leetcode.com/problems/3sum-closest/


class Solution {public:    // Similar to 3Sum Equal    // Enumerate the minimal number, and then it becomes similar to 2Sum Equal    // The overall time complexity is O(NlgN+N*N)=O(N*N)    int threeSumClosest(vector<int> &num, int target) {        int ans=num[0]+num[1]+num[2];        int minAbsDiff=abs(num[0]+num[1]+num[2]-target);        sort(num.begin(),num.end());        int N=num.size();        for(int i=0;i<N;i++){            int left=i+1;            int right=N-1;            while(left<right){                int diff=num[i]+num[left]+num[right]-target;                if(abs(diff)<minAbsDiff){                    minAbsDiff=abs(diff);                    ans=num[i]+num[left]+num[right];                }                if(minAbsDiff==0) return ans;                if(diff>0) right--;                else left++;            }        }        return ans;    }};


原创粉丝点击