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

leetcode刷题记录38-16. 最接近的三数之和

问题描述

给你一个长度为 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^4 <= target <= 10^4

问题分析:

每组输入只存在一个解很关键。做法类似三数之和,我压根没仔细看数据范围,直接就是一个for循环 + 双指针压缩啊,类比着三数之和做。然后后续发现暴力也能过。。。很抽象。

代码如下:

class Solution {
public:int threeSumClosest(vector<int>& nums, int target) {int n = nums.size();//    排序数组ranges::sort(nums);int res = nums[0] + nums[1] + nums[2];//    套三数之和模板,不需要去重for (int i = 0; i < n - 2; ++i) {int left = i + 1, right = n - 1;while (left < right) {int ans = nums[i] + nums[left] + nums[right];//    如果ans就是target,直接返回if (ans == target) {return ans;}//    如果新的ans比起res更接近target,更新resif (abs(target - res) > abs(target - ans)) {res = ans;}if (ans < target) {++left;} else {--right;}}}return res;}
};

贴一下暴力解法:(应该都能看懂我就不写注释了)

class Solution {
public:int threeSumClosest(vector<int>& nums, int target) {int res = nums[0] + nums[1] + nums[2];for(int i = 0; i < nums.size(); ++i){for(int j = i + 1; j < nums.size(); ++j){for(int k = j + 1; k < nums.size(); ++k){int ans = nums[i] + nums[j] + nums[k];if(abs(target - ans) < abs(target - res)){res = ans;}}}}return res;}
};

相关文章:

  • PostgreSQL 如何使用generate_series()函数
  • 短剧app系统开发(对接广告联盟)源码搭建
  • 一文搞定自动化测试
  • Java面试八股之静态变量和实例变量的区别有哪些
  • 绿洲生态【OAS】爱护环境--保护地球
  • 二叉树构建
  • 【CS.PL】Lua 编程之道: 控制结构 - 进度24%
  • 浏览器f12控制台怎么获取vue实例,并且修改data数据
  • C语言学习系列:笔记列表
  • 信号处理中的相位
  • ESP32s3与Lsm6ds3通信---i2c【开源】
  • 单目物体测距
  • Linux 性能优化基础
  • 2024050901-重学 Java 设计模式《实战访问者模式》
  • DB-Engines Ranking 2024年6月数据库排行
  • [笔记] php常见简单功能及函数
  • [译]如何构建服务器端web组件,为何要构建?
  • 10个最佳ES6特性 ES7与ES8的特性
  • angular2 简述
  • ES6简单总结(搭配简单的讲解和小案例)
  • Javascript 原型链
  • Javascript弹出层-初探
  • js正则,这点儿就够用了
  • Laravel Mix运行时关于es2015报错解决方案
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 树莓派 - 使用须知
  • 算法-图和图算法
  • 推荐一个React的管理后台框架
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • ​Java基础复习笔记 第16章:网络编程
  • ​决定德拉瓦州地区版图的关键历史事件
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #{} 和 ${}区别
  • (13)Hive调优——动态分区导致的小文件问题
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (k8s)Kubernetes本地存储接入
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (转)创业的注意事项
  • (转)关于pipe()的详细解析
  • (自用)网络编程
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .DFS.
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Framework杂记
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET构架之我见