【LeetCode16】 最接近的三数之和

2024-02-12 06:58
文章标签 三数 接近 leetcode16

本文主要是介绍【LeetCode16】 最接近的三数之和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.

与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/3sum-closest
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

  • 和三数之和类似, 只需要利用数组有序的特性来进行双指针移动即可

class Solution {public int threeSumClosest(int[] nums, int target) {if (nums == null || nums.length < 3)return 0;//默认最接近是整数最大值int minMinus = Integer.MAX_VALUE;int res = 0;//利用双指针,先排序Arrays.sort(nums);int h, t; for(int i = 0; i < nums.length; i++) {h = i + 1;t = nums.length - 1;while(h < t) {int curNum = nums[i] + nums[h] + nums[t];int minus = curNum - target;if (minus == 0) {return target;} else {//处理差距大小if (Math.abs(minus) < minMinus) {minMinus = Math.abs(minus);res = curNum;}//处理h和t指针if (minus > 0) t--;if (minus < 0) h++;}}}return res;}
}

这篇关于【LeetCode16】 最接近的三数之和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701947

相关文章

【LeetCode】最接近的三数之和

题目要求 解题思路 这道题解题方法和三数之和解题思路一样,可以参考上一篇博客 代码实现 class Solution {public:int threeSumClosest(vector<int>& nums, int target) {//排序sort(nums.begin(),nums.end());int len=nums.size();//固定一个,利用双指针解决int c

第十六题:最接近的三数之和

题目描述 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 示例: 输入:nums = [-1, 2, 1, -4], target = 1 输出:2 解释:与 target 最接近的和为 2 (-1 + 2 + 1 = 2)。 注意: 3 <= nu

【时时三省】c语言例题----华为机试题< 查找组成一个偶数最接近的两个素数>

山不在高,有仙则名。水不在深,有龙则灵。                                                                         ----CSDN 时时三省 1,题目 HJ60 查找组成一个偶数最接近的两个素数 描述 任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个

算法/编程练习:找出若干个数使其和最接近于M

找出若干个数使其和最接近于M 1. 题目 给定一个由正数组成的列表alts,一个目标数M需要从alts中选取若干个备选数,使其和为M若找不到和刚好与M相等的备选数列表,则返回和与M最接近的备选数列表若有多个结果,返回一个即可eg1.输入: alts = [10, 9, 8, 7, 6, 5]M = 22输出: [10, 7, 5] 或 [9, 8, 5]eg2.输入: alts =

算法----------找到 K 个最接近的元素

题目: 给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。示例 1:输入: [1,2,3,4,5], k=4, x=3输出: [1,2,3,4]示例 2:输入: [1,2,3,4,5], k=4, x=-1输出: [1,2,3,4]说明:k 的值为正数,且总是小

★ 算法OJ题 ★ 力扣15 - 三数之和

Ciallo~(∠・ω< )⌒☆ ~ 今天,芝麻凛将和大家一起做一道双指针算法题--三数之和~ 目录 一  题目 二  算法解析 三  编写算法 一  题目 15. 三数之和 - 力扣(LeetCode) 二  算法解析 解法一:排序 + 暴力枚举 + 利用set去重 时间复杂度:O(N^3) 解法二:排序 + 双指针 排序;固定一个数C(C <=

2024.8.30 Python 最大连续1的个数,滑动窗口,排列组合,三数之和

1.最大连续1的个数 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。 示例 1: 输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2 输出:6 解释:[1,1,1,0,0,1,1,1,1,1,1] 粗体数字从 0 翻转到 1,最长的子数组长度为 6。 示例 2: 输入:nums = [0,0,1,

找到K个最接近的元素(LeetCode)

题目 给定一个 排序好 的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。 整数 a 比整数 b 更接近 x 需要满足: |a - x| < |b - x| 或者|a - x| == |b - x| 且 a < b 解题 """时间复杂度为 O(log(n-k) + k),其中 n 是数组的长度。二分查找部分

代码随想录 -- 哈希表 -- 三数之和

15. 三数之和 - 力扣(LeetCode) 思路:         本题适合采用双指针法。 1. 先将数组 nums 升序排序 2. 初始状态:i = 0 ,指针 left = i+1 ,指针 right = len(nums)-1 (left 要 < right) 3. 如果 nums[i] > 0,则不存在满足条件的三元组;     如果 nums[i] + nums[le

力扣最热一百题——6.三数之和

目录 题目链接:15. 三数之和 - 力扣(LeetCode) 题目描述 示例 提示 解法一:双指针 代码分析 总结         没啥多说的,就是最近CS根本上不了分谢谢。 题目链接:15. 三数之和 - 力扣(LeetCode) 注:下述题目描述和示例均来自力扣 题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j]