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; } };


  • 相关阅读:
    Servlet三种实现方法(四)
    Tomcat 网站部署(三)
    MySQL表的增删改查和列的修改(二)
    Tomcat的目录结构(二)
    addEventListener,attachEvent
    DOM事件流
    函数内部的函数中的this都是指向window
    css3 translate属性
    parent,parents和closest
    each用法
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7159010.html
Copyright © 2011-2022 走看看