leetcode #16 in cpp

来源:互联网 发布:淘宝怎么用微信支付吗 编辑:程序博客网 时间:2024/04/29 08:52

This question is almost the same as #15. Just keep track of the current minimum distance during iterations.


class Solution {public:    int threeSumClosest(vector<int>& nums, int target) {        sort(nums.begin(), nums.end());        int min_dist = INT_MAX;//record the mini dist between sum and target        int res = 0;        int cur_sum;//temp current sum        int cur_dist;//temp current mini dist;        for(int i = 0; i < nums.size() - 2; i ++){            if(i-1>=0 && nums[i] == nums[i-1]) continue;            int left = i + 1;            int right = nums.size() - 1;            while(left < right){                cur_sum = nums[i] + nums[left] + nums[right];                cur_dist = abs(target - cur_sum);                if(cur_dist < min_dist){                    min_dist = cur_dist;                    res = cur_sum;                                    }                if(cur_sum < target){                    left++;                }else if(cur_sum > target){                    right --;                }else{                    return target;                }            }        }        return res;    }};


0 0
原创粉丝点击