016.最接近的三数之和-技术派-二哥的 LeetCode 刷题笔记
鲁迅说过,读书不觉已春深,一寸光阴一寸金。每天进步一点点,坚持下去,你会发现,你的进步是惊人的。二哥的 LeetCode 刷题笔记,我要再刷一道三数之和,举一反三。
题意
给你一个长度为 n 的整数数组 nums 和一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。
返回这三个数的和。假定每组输入只存在恰好一个解。
难度
中等
示例
输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
输入:nums = [0,0,0], target = 1
输出:0
分析
既然是最接近的三数之和,那显然我们就可以采用015三数之和的题解思路,先排序,然后固定一个数,再用双指针去找另外两个数。
对三数之和的题解思路不熟悉的球友,可以回头再温故一下。
三数之和的时候和为 0,这里的和为最接近 target 的一个数,那其实解法就真的差不多了。
import java.util.Arrays;
public class Solution {
public int threeSumClosest(int[] nums, int target) {
// 对数组进行排序
Arrays.sort(nums);
// 数组长度
int n = nums.length;
// 初始化最接近的和为前三个元素的和
int closestSum = nums[0] + nums[1] + nums[2];
// 遍历数组,除了最后两个元素(因为我们需要三个数)
for (int i = 0; i < n - 2; i++) {
// 双指针初始化,left 指向当前元素之后的元素,right 指向数组最后一个元素
int left = i + 1, right = n - 1;
while (left < right) {
// 计算当前三个数的和
int sum =
真诚点赞 诚不我欺
回复