16:最接近的三数之和

This commit is contained in:
轩辕龙儿 2022-03-21 22:38:09 +08:00
parent 8a2a98e5bd
commit 29ec6d9681
2 changed files with 105 additions and 0 deletions

View File

@ -0,0 +1,72 @@
//给你一个长度为 n 的整数数组 nums 一个目标值 target请你从 nums 中选出三个整数使它们的和与 target 最接近
//
// 返回这三个数的和
//
// 假定每组输入只存在恰好一个解
//
//
//
// 示例 1
//
//
//输入nums = [-1,2,1,-4], target = 1
//输出2
//解释 target 最接近的和是 2 (-1 + 2 + 1 = 2)
//
//
// 示例 2
//
//
//输入nums = [0,0,0], target = 1
//输出0
//
//
//
//
// 提示
//
//
// 3 <= nums.length <= 1000
// -1000 <= nums[i] <= 1000
// -10 <= target <= 10
//
// Related Topics 数组 双指针 排序 👍 1086 👎 0
package leetcode.editor.cn;
import java.util.Arrays;
//16:最接近的三数之和
public class ThreeSumClosest {
public static void main(String[] args) {
Solution solution = new ThreeSumClosest().new Solution();
}
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int threeSumClosest(int[] nums, int target) {
Arrays.sort(nums);
int res = nums[0] + nums[1] + nums[2];
for (int i = 0; i < nums.length - 2; i++) {
int left = i + 1;
int right = nums.length - 1;
while (left != right) {
int sum = nums[i] + nums[left] + nums[right];
if (Math.abs(sum - target) < Math.abs(res - target)) {
res = sum;
}
if (sum > target) {
right--;
} else {
left++;
}
}
}
return res;
}
}
//leetcode submit region end(Prohibit modification and deletion)
}

View File

@ -0,0 +1,33 @@
<p>给你一个长度为 <code>n</code> 的整数数组&nbsp;<code>nums</code><em>&nbsp;</em>和 一个目标值&nbsp;<code>target</code>。请你从 <code>nums</code><em> </em>中选出三个整数,使它们的和与&nbsp;<code>target</code>&nbsp;最接近。</p>
<p>返回这三个数的和。</p>
<p>假定每组输入只存在恰好一个解。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>nums = [-1,2,1,-4], target = 1
<strong>输出:</strong>2
<strong>解释:</strong>与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>nums = [0,0,0], target = 1
<strong>输出:</strong>0
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>3 &lt;= nums.length &lt;= 1000</code></li>
<li><code>-1000 &lt;= nums[i] &lt;= 1000</code></li>
<li><code>-10<sup>4</sup> &lt;= target &lt;= 10<sup>4</sup></code></li>
</ul>
<div><div>Related Topics</div><div><li>数组</li><li>双指针</li><li>排序</li></div></div><br><div><li>👍 1086</li><li>👎 0</li></div>