关闭

Leetcode 16 3Sum Closest

标签: algorithmc++leetcode工作面试acm
1078人阅读 评论(0) 收藏 举报
分类:

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

和15题差不多,做一些简单的变形就行了

15题题解链接 http://blog.csdn.net/accepthjp/article/details/52347224

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        sort(nums.begin(),nums.end());
        int result=0,d=INT_MAX;
        for(int i=0;i<(int)nums.size()-2;i++)
        {
            if(i!=0 && nums[i]==nums[i-1])continue;
            int l=i+1,r=(int)nums.size()-1;
            while(l<r)
            {
                int com=(nums[i]+nums[l]+nums[r]);
                if(com<=target)
                {
                    l++;
                   // while(l<r && nums[l]==nums[l-1]) l++;
                    if(target-com<d)
                    {
                        d=target-com;
                        result=com;
                    }
                }
                else
                {
                    r--;
                   // while(l<r && nums[r]==nums[r+1]) r--;
                    if(com-target<d)
                    {
                        d=com-target;
                        result=com;
                    }
                }
            }
        }
        return result;
    }
};


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【LeetCode】3Sum 解题报告

这道题凭我现有知识实在解答不上来,只好网上搜索解法,才发现 K Sum 是一类问题,但是网上没有比较简洁的代码,我想对于初学者来说,可能还是想先看看这道题怎么解,然后才有兴趣去看其扩展吧。 【题目】 ...
  • ljiabin
  • ljiabin
  • 2014-10-30 16:00
  • 28003

LeetCode 16 3Sum Closest(最接近的3个数的和)

翻译给定一个有n个整数的数组S,找出S中3个数,使其和等于一个给定的数,target。返回这3个数的和,你可以假定每个输入都有且只有一个结果。例如,给定S = {-1 2 1 -4},和target ...
  • NoMasp
  • NoMasp
  • 2015-10-18 09:59
  • 3441

LeetCode 3Sum 三个数和为零的集合 C++完整程序

掌握了这样的题的要诀就好办: 1 排序 2 前面的两个小数和后面的一个大数相加比较,如果小于0,那么前面的数往前进,增大; 如果大于0,那么后面的数往前进,减小。 3 前面的数和后面的数相遇,本...
  • kenden23
  • kenden23
  • 2013-11-24 19:11
  • 4286

【Leetcode 15】3Sum 三数和问题 C++

leetcode15 threeSum 三数和问题,C++
  • u010656539
  • u010656539
  • 2016-08-14 15:30
  • 1712

LeetCode 16 3Sum Closest 找出最接近指定target的三个数的和

题目: Given an array S of n integers, find three integers in S such that the sum is closest to a gi...
  • vvaaiinn
  • vvaaiinn
  • 2015-05-04 09:26
  • 2056

LeetCode OJ算法题(十六):3Sum Closest

题目: Given an array S of n integers, find three integers in S such that the sum is closest to a ...
  • op_yu
  • op_yu
  • 2014-07-16 20:46
  • 318

和大神们学习每天一题(leetcode)-3Sum Closest

Given an array S of n integers, find three integers in S such that the sum is closest to a given num...
  • majunyangyang
  • majunyangyang
  • 2014-12-22 14:21
  • 165

数组之2Sum,3Sum,4Sum,3Sum closest总结

数组之two Sum  Two Sum 描述 Given an array of integers, find two numbers such that they add up to a s...
  • Lily_whl
  • Lily_whl
  • 2017-04-10 20:39
  • 265

3Sum Closest问题及解法

问题描述: Given an array S of n integers, find three integers in S such that the sum is closest to a ...
  • u011809767
  • u011809767
  • 2017-03-07 14:18
  • 60

算法设计——解决 3Sum 以及 3Sum Closest 问题

常写算法,多动脑,不会老! 3Sum问题: 若不考虑效率问题,则解决该问题的思路就很简单直接,三个 for 循环遍历穷举即可。一个优秀的程序员肯定不能忍受这么无脑的时间复杂度,于是先想到先对全...
  • huangfei711
  • huangfei711
  • 2018-01-06 19:51
  • 31
    个人资料
    • 访问:368635次
    • 积分:6623
    • 等级:
    • 排名:第4179名
    • 原创:286篇
    • 转载:11篇
    • 译文:0篇
    • 评论:65条
    博客专栏
    文章分类
    最新评论