领扣:最接近的三数之和
程序员文章站
2022-05-20 13:52:32
...
笔记
题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
class Solution {
public int threeSumClosest(int[] nums, int target) {
//数组排序
Arrays.sort(nums);
int closest = Integer.MAX_VALUE, sub = 0, subabs = 0, sum = 0;
//每次固定i,在i的两侧设置left和right,根据与target的差值大小调整左移右移
for (int i = 1; i < nums.length - 1; i++) {
int left = 0, right = nums.length - 1;
while (left < i && i < right) {
sub = nums[left] + nums[i] + nums[right] - target;
subabs = Math.abs(sub);
//closest记录和与target的差,sum记录closest对应下的元素和
if (closest > subabs) {
closest = subabs;
sum = nums[left] + nums[i] + nums[right];
}
//三数和大于target,right左移,和减小
if (sub > 0) right--;
//三数和小于target,left右移,和增大
else if (sub < 0) left++;
else {
sum = target;
break;
}
}
}
return sum;
}
}
原贴:https://blog.****.net/xc121566/article/details/81331628
赏心悦目,共勉
推荐阅读
-
在PHP中使用随机数的三个步骤_PHP
-
常用的三种修改mysql最大连接数的方法_MySQL
-
c语言比较三个数大小并排序(比较三个数大小的c语言程序代码)
-
Java使用for循环打印三位数的水仙花数
-
leetcode #16 最接近的三数之和 | 刷题之路第一站——数组类相关问题
-
三重回文数问题E:三重回文数-分支循环小综合[中] 题目描述 判断整数m是否为三重回文数即它是否满足m、m的平方和m的立方均为回文数。 所谓回文数是指其各位数左右对称的数,例如121,676,9424
-
三个数中寻找最大值的5种方法-C语言实现
-
【LeetCode】Python实现-628. 三个数的最大乘积
-
【LeetCode】628.三个数的最大乘积
-
最接近的三个数的和