[Leetcode]3Sum Closest

来源:互联网 发布:返利网淘宝登录不上 编辑:程序博客网 时间:2024/06/10 19:58

3Sum Closest My Submissions Question
Total Accepted: 58639 Total Submissions: 212334 Difficulty: Medium
Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

For example, given array S = {-1 2 1 -4}, and target = 1.The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

Subscribe to see which companies asked this question

在数组里寻找三个数,这三个数的和最接近target,返回这三个数的和,如果等于的话就返回target。
思路:先排序,固定一个数,然后夹逼寻找最接近target的数字和。

class Solution {public:    int threeSumClosest(vector<int>& nums, int target) {        int len = nums.size();        if(len < 3) return -1;        sort(nums.begin(),nums.end());        int first = 0;        int next = 1;        int last = len - 1;        int res = nums[first] + nums[next] + nums[last];        int curSum;        while(first <= len - 3){            next = first + 1;            last = len - 1;            while(next <= last - 1){                curSum = nums[first] + nums[next] + nums[last];                if(abs(curSum - target) < abs(res - target)){                    res = curSum;                }                if(curSum < target) ++ next;                else if(curSum > target) -- last;                else return target;            }            ++ first;        }        return res;    }};
0 0
原创粉丝点击