• 3SumClosest


    3SumClosest

    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)

    class Solution {
    public:
        int threeSumClosest(vector<int> &num, int target) {
            int res = INT_MAX;
            int N = num.size();
            sort(num.begin(), num.end());
            for (int i = 0; i < N-2; ++i) {
                int l = i + 1, r = N - 1;
                while (l < r) {
                    int threesum = num[i] + num[l] + num[r];
                    if (threesum == target) return target;
                    else if (threesum < target) l++;
                    else r--;
                    if (res == INT_MAX || abs(threesum - target) < abs(res - target)) // overflow tricky
                        res = threesum;
                }
            }
            return res;
        }
    };
  • 相关阅读:
    1212321
    123123
    好好干活
    VXLAN学习之路-结合VRF在Linux中实践VXLAN网络
    123456
    期望
    123456
    123456
    Jenkins管理员密码忘记修改操作
    Jenkins 安装与部署详细教程
  • 原文地址:https://www.cnblogs.com/zhengjiankang/p/3644626.html
Copyright © 2020-2023  润新知