美文网首页
16. 3Sum Closest

16. 3Sum Closest

作者: jecyhw | 来源:发表于2019-05-18 17:45 被阅读0次

题目链接

https://leetcode.com/problems/3sum-closest/

解题思路

思路和15. 3Sum类似。
题目求a + b + c 的和尽可能等于 target,,同样可以按照 a <= b <= c来满足题意,所以需要对数组从小到大排序,这样就可以先确定a,确定a之后,用a - target,在a - target的右边找b和c即可,使得b + c 尽可能接近(target - a)。

代码

class Solution {

public:
    int threeSumClosest(vector<int>& nums, int target) {
        int ans = target, mi = 0x3fffffff;
        sort(nums.begin(), nums.end());
        for (int i = 0; i < nums.size() - 2; ++i) {
            if (i > 0 && nums[i] == nums[i - 1]) {//a和前一个数相等,也不再找
                continue;
            }
            int a = nums[i] - target;

            int st = i + 1, ed = nums.size() - 1, t = -a;
            while (st < ed) {
                //nums[st]就是b,nums[ed]就是c。
                int add = nums[st] + nums[ed];
                int dif = t - add;
                if (dif == 0) {
                    return target;
                } else if (dif > 0) {//b+c<-a,b往后移
                    if (dif < mi) {
                        mi = dif;
                        ans = nums[i] + add;
                    }
                    st++;
                } else {//b+c>-a,c往前移
                    if (-dif < mi) {
                        mi = -dif;
                        ans = nums[i] + add;
                    }
                    ed--;
                }
            }

        }
        return ans;
    }
};

相关文章

  • LeetCode #16 2018-07-28

    16. 3Sum Closest Given an array nums of n integers and an...

  • Day3

    16. 3Sum Closest Given an array S of n integers, find thr...

  • LeetCode 16. 3Sum Closest

    16. 3Sum Closest Given an array S of n integers, find thr...

  • 16. 3Sum Closest

    题目: Given an array S of n integers, find three integers i...

  • 16. 3Sum Closest

    题目: 给定一个nums由n个整数和一个整数组成的数组target,找出三个整数nums,使总和最接近target...

  • 16. 3Sum Closest

    Given an array nums of n integers and an integer target, ...

  • 16. 3Sum Closest

    Description Given an array S of n integers, find three in...

  • 16. 3Sum Closest

    Given an array nums of n integers and an integer target, ...

  • 16. 3Sum Closest

    Description Given an array S of n integers, find three in...

  • 16. 3Sum Closest

    先排序,然后左右夹逼,每次当sum-target < diff 用diff记录下最小距离

网友评论

      本文标题:16. 3Sum Closest

      本文链接:https://www.haomeiwen.com/subject/rugtzqtx.html