当前位置: 首页 > news >正文

LeetCode 16.最接近的三数之和

题目

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。

返回这三个数的和。

假定每组输入只存在恰好一个解。

思路

代码

class Solution {public int threeSumClosest(int[] nums, int target) {Arrays.sort(nums);int n = nums.length;int ans = 0;int minDiff = Integer.MAX_VALUE;for (int i = 0; i < n - 2; i++) {int x = nums[i];// 优化三if (i > 0 && x == nums[i - 1]) {continue; }// 优化一int s = x + nums[i + 1] + nums[i + 2];if (s > target) { // 后面无论怎么选,选出的三个数的和不会比 s 还小if (s - target < minDiff) {ans = s; // 由于下面直接 break,这里无需更新 minDiff}break;}// 优化二s = x + nums[n - 2] + nums[n - 1];if (s < target) { // x 加上后面任意两个数都不超过 s,所以下面的双指针就不需要跑了if (target - s < minDiff) {minDiff = target - s;ans = s;}continue;}int j = i + 1;int k = n - 1;while (j < k) {s = nums[i] + nums[j] + nums[k];if (s == target) {return target;}if (s > target) {if (s - target < minDiff) {minDiff = s - target;ans = s;}k--;} else {if (target - s < minDiff) {minDiff = target - s;ans = s;}j++;}}}return ans;}
}

性能

http://www.dtcms.com/a/389477.html

相关文章:

  • 深入解析Redis集群模式:构建高可用与可扩展的缓存系统
  • 小麦病害检测识别数据集:1k图像,4类,yolo标注
  • Python读取excel表格并写入数据库
  • 【LeetCode 每日一题】1317. 将整数转换为两个无零整数的和
  • 论文投稿信(Cover Letter)
  • WPF——DataGrid
  • 物联网智能电表平台:所有电表数据,集中到一个系统管
  • Python自学19-Python操作Word和PowerPoint文件
  • Android使用GPU指南
  • 贪心算法应用:装箱问题(BFD算法)详解
  • 如何入门到实战策略学习ETF期权?
  • 贪心算法应用:最小反馈顶点集问题详解
  • 物联网与智能体:下一代数字化生态的关键
  • 关于lvs+keeplived在mysql分库分上负载部署
  • Springboot获取bean的工具类
  • C++学习日记
  • DRAM的原理
  • Ansible插件开发
  • ubuntu 两个网卡进行映射
  • 通信高效的数据并行分布式深度学习-综述-图表解读
  • 为何我的无刷电机在FOC开环控制下迅速发烫?
  • Docker多容器编排:Compose 实战教程——深入探索与实践
  • 网络交换机分类与功能解析
  • FPGA学习笔记——Vivado创建工程(2022版)
  • Python 美食菜谱可视化:Django 后端 + Vue 前端 + 豆果爬虫 + Echarts(大数据方向)(建议收藏)✅
  • 【从入门到精通Spring Cloud】声明式服务调用组件OpenFeign
  • 【Linux】系统部分——线程互斥
  • Qt QVBoxPlotModelMapper详解
  • Arcgis中的模型构建器技术之按属性批量建库并对应输出
  • Selenium UI 自动化:自定义 send_keys 方法实现与优化