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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先排序
  • 固定左端的数nums[i],0<=i<=n−3nums[i], 0<= i <= n-3nums[i],0<=i<=n−3
  • 然后让start=nums[i+1],end=nums[n−1]start = nums[i+1], end = nums[n-1]start=nums[i+1],end=nums[n−1],比较与target的差距,区间向中间收缩
  • 循环,移动左端的 i
class Solution { //C++
public:int threeSumClosest(vector<int>& nums, int target) {sort(nums.begin(), nums.end());int i, s, e, minDiffer = INT_MAX, record;int cursum = nums[0]+nums[1]+nums[2];if(target <= cursum)return cursum;for(int i = 0; i < nums.size()-2; ++i){s = i+1; //右边区间起点e = nums.size()-1; //右边区间终点while(s < e){cursum = nums[i]+nums[s]+nums[e];if(abs(cursum-target) < minDiffer){minDiffer = abs(cursum-target);record = cursum;}if(cursum < target)++s;    //收缩区间else if(cursum == target)return cursum;else--e; //收缩区间}}return record;}
};
class Solution:# py3def threeSumClosest(self, nums: List[int], target: int) -> int:nums.sort()minDiffer, record = float('inf'), 0cursum = nums[0]+nums[1]+nums[2];if target <= cursum:return cursumn = len(nums)cursum = nums[n-3]+nums[n-2]+nums[n-1]if target >= cursum:return cursumfor i in range(n-2):s = i+1e = n-1while s < e:cursum = nums[i]+nums[s]+nums[e]if abs(cursum-target) < minDiffer:minDiffer = abs(cursum-target)record = cursumif cursum < target:s += 1elif cursum == target:return cursumelse:e -= 1return record

LeetCode 16. 最接近的三数之和(固定左端+滑动窗口)相关推荐

  1. Java实现 LeetCode 16 最接近的三数之和

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

  2. leetcode —— 16. 最接近的三数之和

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

  3. leetcode 16.最接近的三数之和

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

  4. LeetCode 16. 最接近的三数之和 3Sum Closest

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

  5. 3. Leetcode 16. 最接近的三数之和 (数组-双向双指针)

    给你一个长度为 n 的整数数组 nums 和 一个目标值 target.请你从 nums 中选出三个整数,使它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在恰好一个解.示例 1: ...

  6. LeetCode 16最接近的三数之和

    力扣 思路 排序+双指针 枚举第一个数a,对剩下的两个元素b,c,希望它们的和最接近target-a 1.如果它们在原数组中枚举的范围没有任何规律可言,只能用两重循环来枚举所有情况 ->考虑对数 ...

  7. LeetCode 16 最接近的三数之和

    https://leetcode-cn.com/problems/3sum-closest/ 解决方案 class Solution {public int threeSumClosest(int[] ...

  8. Leetcode 16. 最接近的三数之和(3Sum Closest)

    解法一: class Solution { public:int threeSumClosest(vector<int>& nums, int target) {int close ...

  9. Leetcode算法Java全解答--16. 最接近的三数之和

    Leetcode算法Java全解答–16. 最接近的三数之和 文章目录 Leetcode算法Java全解答--16. 最接近的三数之和 题目 想法 结果 总结 代码 我的答案 暴力破解 滑动列表 大佬 ...

最新文章

  1. java线程安全性_Java并发-线程安全性
  2. css设置最小宽度消失,关于CSS:最小/最大宽度媒体查询没有语法意义
  3. 调剂厦大计算机,2017智能系硕士统考研究生调剂信息
  4. “出道” 5 年采用率达 78%,Kubernetes 为何如此成功?
  5. 读xml文件时字体串类型的判断
  6. WIN10 删除文件 找不到该项目
  7. 环境微生物复习题及答案
  8. BurpSuite-Target使用
  9. C语言判断输入的正整数是否既是5又是7的整倍数。
  10. void函数内创建并返回一个结构体
  11. 如何直观理解交叉熵及其优势?
  12. Compound 治理——执行队列 TimeLock
  13. 网页中无法添加微信好友怎么办?如何一键唤起微信添加好友?
  14. 外贸通:1.5亿用户信息遭泄露,又一大公司泄露用户数据!健身App被黑客攻破
  15. Epic 起诉苹果,G 胖无辜背锅,要求其公开数百款第三方游戏 6 年的数据,网友:G 胖实冤!...
  16. 【framework】IMS启动流程
  17. JAVA模板引擎velocity语法讲解
  18. Oracle EBS R12 GL总帐模块 查询账户余额、发生额SQL
  19. 海康工业相机排雷笔记-01-分辨率设置
  20. Android中如何APP视屏如何去除广告

热门文章

  1. C++类构造函数初始化列表及初始化成员变量的误区
  2. 14 Scroll 滚动搜索
  3. 银联Apple Pay 总结
  4. Brainstorm-the walkthrough example: Image Classification
  5. 改不改,这是一个问题
  6. 将方法作为方法的参数 —— 理解委托
  7. Example3_1
  8. 复制文本框内容至剪贴板
  9. WinForm与脚本的交互
  10. 电子美图更新36张!