zoukankan      html  css  js  c++  java
  • LeetCode: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).
    解题思路:
        与Three Sum的做法类似,首先枚举中间数字的位置。然后找寻和离target减去中间数字近期的
    
    点就可以(此处需用绝对值).时间复杂度为O(N^2).
    解题代码:
        
    class Solution {
    public:
        int threeSumClosest(vector<int> &num, int target) 
        {
            sort(num.begin(),num.end());
            unsigned n = num.size() ;
            long long res = abs(num[0] + num[1] + num[2] - target) , sum = num[0] + num[1] + num[2] ;
            for(unsigned i=1;i < n - 1 ;++i)
            {
                long long sum1 = target - num[i] ;
                unsigned j = 0 , k = n - 1 ;
                while( j < i && k > i )
                {
                    long long tmp = num[j] + num[k] ;
                    if(res > min(res,abs(sum1-tmp)))
                    {
                        res = min(res,abs(sum1-tmp));
                        sum = num[i] + tmp;
                    }                    
                    if(sum1 == tmp)
                        return sum;
                    tmp > sum1 ?

    --k : ++j ; } } return sum; } };


  • 相关阅读:
    ssh免密登录
    jdk安装
    jq选择器
    使用<button></button>标签
    mysql连接字符串
    如何把maven项目转成web项目
    pl/sql连接远程oracle
    Oracle 存储过程
    SQL Server存储过程
    MySQL存储过程
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7159010.html
Copyright © 2011-2022 走看看