美文网首页LeetCode题解
LeetCode016:最接近的三数之和

LeetCode016:最接近的三数之和

作者: 大大纸飞机 | 来源:发表于2019-01-24 16:58 被阅读39次

题目介绍

题目:最接近的三数之和
描述:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

解析

此题我们可以参考三数之和的思路,接近某个值可以理解为三数之和与此值的差接近于0。记 a, b, c 是目标值,那么 a+b+c - target 的值可能大于0,也可能小于0,这就为我们判断提供了条件。于是我们依然可以使用左右指针,将这个差值向 0 调整即可。参考代码如下:

public int threeSumClosest(int[] nums, int target) {
    int sum = 0;
    int sub = 0;
    int absSub = Integer.MAX_VALUE;

    int len = nums.length;
    // 从小到大排序
    Arrays.sort(nums);
    for (int i = 0; i < len; i++) {
        int left = i+1;
        int right = len - 1;
        while (left<right) {
            sub = nums[i]+nums[left]+nums[right] - target;
            if (absSub>Math.abs(sub)) {
                absSub = Math.abs(sub);
                sum = nums[i]+nums[left]+nums[right];
            }
            if (sub>0) {
                right--;
            }else if(sub<0){
                left++;
            }else{
                sum = nums[i]+nums[left]+nums[right];
                break;
            }
        }
    }
    
    return sum;
}

总结

因为有三数之和的经验,这个题目变得十分简单了,然而不论在面试中,还是在生活中,遇到相似的问题,我们也不一定能很快把它与之前的经验联系起来,所以我们要关注的是解决问题的方法,这样才能以不变应万变。

相关源码已经上传到我的Github

下题预告

题目:电话号码的字母组合
描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

数字字母映射

示例:

  • 输入:"23"
    输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。


本文到此就结束了,如果您喜欢我的文章,可以关注我的微信公众号: 大大纸飞机

或者扫描下方二维码直接添加:

公众号

您也可以关注我的github:https://github.com/LtLei/articles

编程之路,道阻且长。唯,路漫漫其修远兮,吾将上下而求索。

相关文章

  • LeetCode016:最接近的三数之和

    题目介绍 题目:最接近的三数之和描述:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出...

  • algrithrom

    求和问题,双指针解决 done 两数之和 三数之和 最接近三数之和 四数之和 链表反转问题 done 链表反转 链...

  • LeetCode-16 最接近的三数之和

    题目:16. 最接近的三数之和 难度:中等 分类:数组 解决方案:双指针 今天我们学习第16题最接近的三数之和,这...

  • 双指针总结

    左右指针 主要解决数组中的问题:如二分查找 盛最多水的容器 三数之和 四数之和 最接近三数之和 快慢指针 主要解决...

  • LeetCode练习day1-数组相关

    LeetCode16 最接近的三数之和 相似题目:LeetCode15 三数之和 题目详情 给你一个长度为 n 的...

  • 最接近的三数之和

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum...

  • 最接近的三数之和

    题目 思路 题解

  • 最接近的三数之和

    题目地址 1.思路 第一步很容易想到的就是降维处理,三个数相当于三维,那么我确定一个数的时候只剩下2维,这样就把问...

  • 最接近的三数之和

    leetcode 16 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中...

  • 最接近的三数之和

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum-c...

网友评论

    本文标题:LeetCode016:最接近的三数之和

    本文链接:https://www.haomeiwen.com/subject/gvfujqtx.html