博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 16. 3Sum Closest JAVA
阅读量:4589 次
发布时间:2019-06-09

本文共 1238 字,大约阅读时间需要 4 分钟。

题目:

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

解题思路:

将nums数组重新排列,然后从i = 0开始遍历,分别取left = i + 1和right = nums.length - 1,将nums[i]、nums[left]和nums[right]三数之和与target差值的绝对值与diff比较,如果小于diff,则使sum赋值为此三数之和,并且将diff的值修改为三数之和与target差值的绝对值

 

class Solution {    public int threeSumClosest(int[] nums, int target) {        int diff = Integer.MAX_VALUE, result = 0;        Arrays.sort(nums);        for (int i = 0; i < nums.length - 2; i++) {            int left = i + 1, right = nums.length - 1;            while (left < right) {                int sum = nums[i] + nums[left] + nums[right];                if (sum == target) {                    return sum;                }                 if (diff > Math.abs(target - sum)) {                    diff = Math.abs(target - sum);                    result = sum;                }                 if (sum > target) {  //因为sum > target,因此只需将right向左调整,此时sum的值则会减少,这样才能找到更接近的target的三数之和                    right--;                } else {                    left++;  //因为sum <= target,因此只需将left向右调整,此时sum的值则会增加,这样才能找到更接近target的三数之和                }                            }        }        return result;    }}

 

转载于:https://www.cnblogs.com/yanhowever/p/10431031.html

你可能感兴趣的文章
洛谷 P3225 [HNOI2012]矿场搭建
查看>>
orcad找不到dll
查看>>
各种排序算法的性能特点
查看>>
LET IT BE
查看>>
在线帮助你修改图片背景的工具 - Clipping Magic
查看>>
BizTalk动手实验(十三)EDI解决方案开发配置
查看>>
初学github
查看>>
iOS开发拓展篇—UIDynamic(重力行为+碰撞检测)
查看>>
extjs 下载文件 关键前后端代码
查看>>
.NET 4.0 兼容 .NET 2.0 的方法
查看>>
1001 Maximum Multiple(2018 Multi-University Training Contest 1)
查看>>
对Java对象的认识与理解
查看>>
python——父类与子类的一些说明
查看>>
2019年3月3日 2018-2019-2 20189205《移动平台应用开发实践》第二周作业
查看>>
MySQL 性能优化--优化数据库结构之优化数据类型
查看>>
软件工程之软件需求分析
查看>>
Electron简介和安装使用
查看>>
Improving Visual C++ Debugging with Better Data Display
查看>>
JDBC
查看>>
workspace 配置
查看>>