LeetCode 16. 3Sum Closest

原创 2018年04月15日 21:05:42

问题描述

  • Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
  • Example:

Given array nums = [-1, 2, 1, -4], and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

问题分析

  • 该题是 LeetCode 15. 3Sum 的变形。
  • 同样是先对数组进行排序,然后固定一个数,然后用双指针来确定另外两个数。 根据三个数之和与 target 的比较来决定相应的操作。具体见实现

代码实现

class Solution {
    public int threeSumClosest(int[] nums, int target) {
        if (nums == null) {
            return 0;
        }
        int length = nums.length;
        int res = 0;
        //数组长度 <= 3时
        if (length <= 3) {
            for (int i = 0; i < length; i++) {
                res += nums[i];
            }
            return res;
        }
        //排序
        Arrays.sort(nums);
        //初始化res
        res = nums[0] + nums[1] + nums[2];
        for (int i = 0; i < length - 2; i++) {
            //固定一个元素,利用双指针找另外两个元素
            int left = i + 1;
            int right = length - 1;
            while (left < right) {
                //计算当前三个数的和
                int curSum = nums[i] + nums[left] + nums[right];
                if (target == curSum) {//等于target直接返回
                    return curSum;
                }else if (curSum < target) {//小于,则左指针右移
                    ++left;
                }else {//大于,右指针左移
                    --right;
                }
                if (Math.abs(target - curSum) < Math.abs(target - res)) {//将res更新为最接近target的那个值
                    res = curSum;
                }
            }
        }
        return res;

    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjxxyz123/article/details/79953269

WIN2000漏洞(2) —— 绿色兵团的文章,简直爽呆了

WIN2000漏洞(2)加入时间:01-1-7 上午 11:43:28妖狐安全资讯网 现在开始会复杂些了(而这就是乐趣的源泉!:))。 在main函数的最后一行代码处设置断点,因为我们只关心这里所发生...
  • silver
  • silver
  • 2001-01-10 02:54:00
  • 1252

LeetCode 16 3Sum Closest(C,C++,Java,Python)

Problem: Given an array S of n integers, find three integers in S such that the sum is closest ...
  • runningtortoises
  • runningtortoises
  • 2015-05-09 22:26:02
  • 1847

16. 3Sum Closest Leetcode Python

Given an array S of n integers, find three integers in S such that the sum is closest to a given num...
  • hyperbolechi
  • hyperbolechi
  • 2015-01-17 10:10:08
  • 779

LeetCode 16. 3Sum Closest(给定和,求三元组)

题目描述:    Given an array S of n integers, find three integers in S such that the sum is closest to a ...
  • princexiexiaofeng
  • princexiexiaofeng
  • 2018-03-17 15:20:11
  • 11

【LeetCode】3Sum Closest 解题报告

【题目】 Given an array S of n integers, find three integers in S such that the sum is closest to a gi...
  • ljiabin
  • ljiabin
  • 2014-10-30 16:57:05
  • 8197

【LeetCode】LeetCode——第16题:3Sum Closest

【LeetCode】LeetCode——第16题:3Sum Closest
  • hujingshuang
  • hujingshuang
  • 2016-04-29 21:18:52
  • 4238

leetcode-java-16. 3Sum Closest

思路: 先升序排序,然后用第一重for循环确定第一个数字。 然后在第二重循环里,第二、第三个数字分别从两端往中间扫。 如果三个数的total等于target,返回target。 如果三个数的t...
  • github_34514750
  • github_34514750
  • 2016-06-07 21:47:12
  • 536

Leetcode #16 3Sum Closest 找3数之和最接近 解题小节

1 题目理解昨晚上光顾着吃深夜泡面,忘了更新了。。所以这一更就算是补上昨天的,今天的另算。这道题和 Leetcode #15 3Sum 三数之和 解题小节 很像,区别是#15是要三数之和等于目标值,这...
  • MebiuW
  • MebiuW
  • 2016-03-19 10:13:59
  • 521

3Sum Closest -- LeetCode

原题链接: http://oj.leetcode.com/problems/3sum-closest/ 这道题跟3Sum很类似,区别就是要维护一个最小的diff,求出和目标最近的三个和。brute ...
  • linhuanmars
  • linhuanmars
  • 2014-02-22 23:22:01
  • 12862

LeetCode 3Sum Closest JS实现

Given an array S of n integers, find three integers in S such that the sum is closest to a given num...
  • u013993319
  • u013993319
  • 2016-07-26 11:34:23
  • 253
收藏助手
不良信息举报
您举报文章:LeetCode 16. 3Sum Closest
举报原因:
原因补充:

(最多只允许输入30个字)