Leetcode:最接近的三数之和

题目链接:16. 最接近的三数之和 - 力扣(LeetCode)

普通版本(排序 + 双指针)

主旨:最近值即为差值的绝对值最小值

class Solution {
public:int threeSumClosest(vector<int>& nums, int target) {sort(nums.begin(), nums.end());int n = nums.size();int best = 1e7;//假设最近距离为le7// 根据差值的绝对值来更新答案,lambda表达式对捕获到的参数进行更新auto update = [&](int cur) {if (abs(cur - target) < abs(best - target)) //abs计算绝对值大小{best = cur;}};// 枚举 afor (int i = 0; i < n; ++i) {// 保证和上一次枚举的元素不相等if (i > 0 && nums[i] == nums[i - 1]) {continue;}// 使用双指针枚举 b 和 cint j = i + 1, k = n - 1;//j表示指向b的指针,k表示指向c的指针while (j < k) {int sum = nums[i] + nums[j] + nums[k];//计算此时三元组的和// 如果和为 target 直接返回答案if (sum == target) {return target;}update(sum);//更新此时的最近距离if (sum > target) {// 如果和大于 target,移动 c 对应的指针int k0 = k - 1;// 移动到下一个不相等的元素while (j < k0 && nums[k0] == nums[k]) {--k0;}k = k0;} else {// 如果和小于 target,移动 b 对应的指针int j0 = j + 1;// 移动到下一个不相等的元素while (j0 < k && nums[j0] == nums[j]) {++j0;}j = j0;}}}return best;}
};

~over~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/23009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DBSCAN 算法【python,机器学习,算法】

DBSCAN 即 Density of Based Spatial Clustering of Applications with Noise&#xff0c;带噪声的基于空间密度聚类算法。 算法步骤&#xff1a; 初始化&#xff1a; 首先&#xff0c;为每个数据点分配一个初始聚类标签&#xff0c;这里设为0&#xff0c;表示该点尚未被分配…

Angular17(2):angular项目中使用NG-ZORRO

1、使用Angular CLI创建空项目 ng new angular-admin-web --stylescss 2、执行ng add ng-zorro-antd命令安装 &#xff08;1&#xff09;ng add ng-zorro-antd 在angular项目下运行命令 ng add ng-zorro-antd 跟随选项便可完成初始化配置&#xff0c;包括引入国际化文件&…

多模块工程中Controller中注入Service报错的问题

问题 2024-06-05 22:05:12,241 ERROR [http-nio-8888-exec-1][DirectJDKLog.java:175] - Servlet.service() for servlet [dispatcherServlet] in context with path [/content] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.…

上位机图像处理和嵌入式模块部署(f407 mcu中的单独上位机烧录方法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过&#xff0c;stm32有三种烧录方法&#xff0c;一种是st-link v2&#xff0c;一种是dap&#xff0c;一种是j-link。不过我们在实际操作…

C++基础编程100题-004 OpenJudge-1.1-06 空格分隔输出

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0101/06/ 描述 读入一个字符&#xff0c;一个整数&#xff0c;一个单精度浮点数&#xff0c;一个双精度浮点数&#xff0c;然后按顺序输出它们&#xff0c;并且要求在他们之间用一个空格分隔。输出浮点数时保留…

Hadoop yixing(移行),新增表字段,删除表字段,修改存储格式

Hadoop yixing(移行)&#xff0c;新增表字段&#xff0c;删除表字段&#xff0c;修改存储格式 一、hadoop中修改存储格式&#xff0c;比如从 textfile 转化为 orc 格式&#xff0c;表中的数据的组织形式要重新改变&#xff0c;就要将重新创建新格式的表将原来的数据按照新的格…

中信证券:A股下半年将迎来年度级别上涨行情的起点

中信证券认为&#xff0c; 过去3年压制A股表现的经济动能转换&#xff0c;资本市场生态&#xff0c;中美战略博弈这三大叙事都将迎来重大拐点&#xff0c;随着政策、价格、外部三类信号逐步验证&#xff0c;2024年下半年A股市场将迎来年度级别上涨行情的起点 过去3年压制A股表…

鸿蒙开发接口安全:【@ohos.userIAM.userAuth (用户认证)】

用户认证 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import userIAM_userAuth from ohos.userIAM.userAuth;完整示例 // API version 6 import userIAM_userAuth from ohos.use…

最小栈、栈的弹出(C++)

1.最小栈 思路分析&#xff1a; 代码&#xff1a; class MinStack { public:MinStack() {}void push(int val) {st.push(val);//两种情况需要更新最小值//1.最小栈为空(就是存最小值的那个栈)//2.插入的值小于或等于最小栈的栈顶元素if(minstack.empty()||minstack.top()>…

C++--DAY3

思维导图 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数。 #include <iostream>using namespace std; class …

006 RabbitMQ

文章目录 为什么要使用RabbitMQ异步处理解耦流量削峰数据同步 使用RabbitMQ的场景异步处理应用解耦数据同步流量削峰 RabbitMQ有哪些工作模式简单模式&#xff1a;Work模式&#xff1a;订阅模式&#xff08;Publish/Subscribe&#xff09;&#xff1a;路由模式&#xff08;Rout…

SOCKS 代理 和 HTTP 代理, WebSocket

SOCKS 代理 和 HTTP 代理 的区别 SOCKS 代理 和 HTTP 代理 都是代理服务器&#xff0c;它们充当客户端和目标服务器之间的中介&#xff0c;但它们的工作方式和应用场景有所不同。 1. SOCKS 代理&#xff1a; 工作原理&#xff1a; SOCKS 代理是一种更底层的代理&#xff0c;…

查看docker中各个容器所占的资源

要查看Docker中的每个容器占用的资源&#xff0c;可以使用docker stats命令。这个命令提供了容器的实时资源使用统计&#xff0c;包括内存使用情况。以下是如何使用docker stats命令的示例&#xff1a; docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsa…

【QT5】<总览三> QT常用控件

文章目录 前言 一、QWidget---界面 二、QPushButton---按钮 三、QRadioButton---单选按钮 四、QCheckBox---多选、三选按钮 五、margin&padding---边距控制 六、QHBoxLayout---水平布局 七、QVBoxLayout---垂直布局 八、QGridLayout---网格布局 九、QSplitter---…

docker容器内无法使用命令问题

更换国内源 /etc/apt/source.list 可以先apt-get install vim #进入容器 docker exec -it 容器ID /bin/bashmv /etc/apt/source.list /etc/apt/source.list.bd vim /etc/apt/source.list#此处我使用腾讯云的源 deb http://mirrors.cloud.tencent.com/debian/ buster main non…

React@16.x(20)渲染流程-首次渲染

目录 1&#xff0c;渲染的前置知识点1.1&#xff0c;React 元素1.2&#xff0c;React 节点1.3&#xff0c;节点类型1.4&#xff0c;真实DOM 2&#xff0c;首次渲染2.1&#xff0c;根据参数创建节点2.2&#xff0c;不同节点&#xff0c;有不同处理2.3&#xff0c;生成虚拟DOM树2…

course-nlp——2-svd-nmf-topic-modeling

本文参考自https://github.com/fastai/course-nlp。 使用NMF and SVD进行主题建模 问题 主题建模是开始学习 NLP 的一种有趣方式。我们将使用两种流行的矩阵分解技术。考虑最极端的情况——使用两个向量的外积重建矩阵。显然&#xff0c;在大多数情况下&#xff0c;我们无法…

《微服务大揭秘:SpringBoot与SpringCloud的魔法组合》

加入我们的探险队伍&#xff0c;一起深入SpringBoot与SpringCloud构建的微服务世界。以轻松幽默的笔触&#xff0c;带你一步步揭开微服务架构的神秘面纱&#xff0c;从服务发现的智能地图Eureka&#xff0c;到API网关Zuul的城市门卫&#xff0c;每一个环节都充满了惊喜。不仅如…

2. JavaScript 语法和数据结构

1. 基础 JavaScript不区分大小写 2. 注释 // 单行注释/* 这是一个更长的&#xff0c;多行注释 *//* 然而&#xff0c;你不能&#xff0c;/* 嵌套注释 */ 语法错误 */3. 声明 var 声明一个变量&#xff0c;可选初始化一个值。 let 声明一个块作用域的局部变量&#xff0c;可…

蒸汽流量积算仪数采上云案例

蒸汽流量积算仪数采上云案例 背景需求 中晟环境项目&#xff0c;蒸汽流量积算仪数据采集上云。传统方案&#xff0c;采用人工抄表方式&#xff0c;人工成本高&#xff0c;记录繁琐&#xff0c;数据记录常常出现记录错乱、模糊的情形。根据现有需求&#xff0c;实现积算仪的数…