zoukankan      html  css  js  c++  java
  • 3Sum Closest

    题目描述:

    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).

      这道题原理和前面的3Sum一样,不再说明。

    solution:

    int threeSumClosest(vector<int> &num, int target) {
        int n = num.size();
        if(n <= 3)
            return accumulate(num.begin(),num.end(),0);
        sort(num.begin(),num.end());
        int res = num[0] + num[1] + num[2];
        int low, high;
        int sum;
        for (int i = 0;i < n-2;++i)
        {
            low = i + 1;
            high = n - 1;
            while (low < high)
            {
                sum = num[i] + num[low] + num[high];
                if (abs(sum - target) < abs(res - target))
                {
                    if(sum == target)
                        return sum;
                    res = sum;
                }
                sum < target ? ++low : --high; 
            }
        }
        return res;
    }
  • 相关阅读:
    交换实验
    路由引入和控制
    ISIS
    BGP联盟
    BGP2
    bgp
    Linux日常总结
    配置本地yum源方法
    达梦数据库常见问题-安装
    达梦数据库常见问题-安装
  • 原文地址:https://www.cnblogs.com/gattaca/p/4284708.html
Copyright © 2011-2022 走看看