力扣题库刷题笔记16--最接近的三数之和

news2024/9/27 5:50:20

1、题目如下:

 2、个人Python代码实现

        本题的思路应该与很早之前刷的第15题三数之和是一个思路:

        1、先将数组排序,然后进行遍历数组

        2、确定左指针、右指针

        3、判断三个数之和是否接近目标值

        4、重点是,为确保左右指针不是同一个元素,所以在条件判断中均不可忽略左右指针是否为同一元素

提交代码如下:

class Solution:

    def threeSumClosest(self, nums: List[int], target: int) -> int:

        nums.sort()                         #将数组排序

        temp = float('inf')                 #临时变量,用于保存子数组之和与target的差值,取差值最小值就是本题的最接近的和

        res = []                            #当temp为较小值时,更新res中的元素,当循环完成后,res中的三个数之和就与target最接近  

        for i in range(len(nums)):          #遍历数组

            l = i + 1                       #左指针为当前元素右方的第一个元素

            r = len(nums) - 1               #右指针为nums最后一个元素

            while l < r:

                #当三个数之和小于target的时候

                #先判断三数之和与target差值的绝对值是否小于temp,如果小于temp,则更新temp和res

                #再将左指针右移                   

                if nums[i] + nums[l] + nums[r] < target and l != r:

                    if abs(nums[i] + nums[l] + nums[r] - target) < temp:

                        temp = abs(nums[i] + nums[l] + nums[r] - target)

                        res = [nums[i], nums[l], nums[r]]

                    l += 1

                #当三个数之和大于target的时候

                #先判断三数之和与target差值的绝对值是否小于temp,如果小于temp,则更新temp和res

                #再将右指针左移 

                elif nums[i] + nums[l] + nums[r] > target and l != r:

                    if abs(nums[i] + nums[l] + nums[r] - target) < temp:

                        temp = abs(nums[i] + nums[l] + nums[r] - target)

                        res = [nums[i], nums[l], nums[r]]

                    r -= 1

                                #当三个数之和小于target的时候

                #先判断三数之和与target差值的绝对值等于temp,退出循环 

                elif nums[i] + nums[l] + nums[r] == target and l != r:

                    res = [nums[i], nums[l], nums[r]]

                    break

        return sum(res)

 

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

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

相关文章

Transformer回归预测

一、Attention is all you need——李沐论文精读Transformer 论文地址&#xff1a; https://arxiv.org/pdf/1706.03762.pdf Transformer论文逐段精读【论文精读】 卷积神经网络对较长的序列难以建模&#xff0c;因为他每次看一个比较小的窗口&#xff0c;如果两个像素隔得比较…

6.STM32时钟系统

1.时钟系统框图: HSI&#xff1a;高速的内部时钟->8MHz;HSE&#xff1a;外部高速时钟->8MHz;PLL&#xff1a; 锁相环->用于倍频(放大频率)&#xff1b;CSS&#xff1a;时钟监控系统(一旦检测到HSE(外部晶振)失败&#xff0c;将会自动切换系统时钟源HSI)&#xff1b;LS…

高等数学函数的性质

&#xff08;本文内容为个人笔记分享&#xff09; 牛顿二项公式 ( x y ) n ∑ k 0 n C n k ⋅ x n − k y k (xy)^n\stackrel{n}{\sum\limits_{k0}}C^k_n\sdot x^{n-k}y^k (xy)nk0∑​n​Cnk​⋅xn−kyk. 映射 f : X → Y f:X\rightarrow Y f:X→Y&#xff0c; f f f 为 …

成功解决RuntimeError:Unable to find a valid cuDNN algorithm to run convolution

该错误有可能是由于GPU不足导致的 有两种解决方法: 方法一&#xff1a;指定device 在指定device时&#xff0c;没有指定具体的卡 只用了如下代码 device torch.device("cuda" if torch.cuda.is_available() else "cpu")默认使用了index0的卡&#xff0…

CppUTest——【由JUnit移植过来的】C++单元测试框架——的下载安装

C单元测试框架CppUTest的下载与安装 简介下载地址单元测试框架下载单元测试被测工程下载 安装安装Cygwin下载地址安装步骤手动安装CMake 编译单元测试框架CppUTest 导入到Virtual Studio准备条件根据VS版本选择导入对应的.sln文件 简介 CppUnit是【由JUnit移植过来的】C测试框…

每日一练 | 华为认证真题练习Day65

1、如果一个以太网数据帧的Length/Type0x8100&#xff0c;那么这个数据帧的载荷不可能是&#xff1f;&#xff08;多选&#xff09; A. ARP应答报文 B. OSPF报文 C. RSTP数据帧 D. STP数据帧 2、路由器某接口配置信息如下&#xff0c;则此端口可以接收携带哪个VLAN的数据包…

《C++ Primer》--学习8

vector 对象是如何增长的 当不得不获取新的内存空间时&#xff0c;vector 和 string 的实现通常会分配比新的空间需求更大的内存空间&#xff0c;容器预留这些空间作为备用&#xff0c;这样就不用每次添加新元素都重新分配容器的内存空间了 管理容器的成员函数 capacity 和 …

高速电路设计系列分享-带宽和动态范围

目录 概要 整体架构流程 技术名词解释 1.带宽 2.动态范围 小结 概要 提示&#xff1a;这里可以添加技术概要 本文继续熟悉一些基本概念。 在许多技术领域,我们习惯于把技术进步与更高的速率关联起来:从以太网到无线局域网再到蜂窝移动网络&#xff0c;数据通信的实质就是不断…

MySQL8.0(Win)的安装步骤

MySQL8.0&#xff08;Win&#xff09;的安装步骤 MySql8.0 安装网址MySql8.0 安装界面界面一界面二界面三界面四界面五界面六界面七界面八界面十界面十一 查看 MySql8.0 安装结果配置MySql8.0的环境变量Path使用命令行访问MySQL的安装结果使用命令行操作MySQL数据库显示MySQL中…

Fiddler 简单抓包

文章目录 一、Fiddler 简介二、下载 Fiddler三、功能介绍1、Filters2、Inspectors3、Automatic BreakPoints4、TextWizard5、其他常用功能 一、Fiddler 简介 Fiddler是一个http协议调试代理工具&#xff0c;它能够记录并检查所有你的电脑和互联网之间的http通讯&#xff0c;设…

计算机由于找不到msvcr120.dll无法执行代码的解决方法分享

运行软件程序或游戏的时候&#xff0c;计算机提示由于找不到msvcr120.dll无法执行代码是怎么回事呢&#xff1f;msvcr120.dll是Microsoft Visual C的一部分&#xff0c;用于在Windows操作系统上运行C应用程序。它是一个动态链接库文件&#xff0c;包含了许多C运行时库&#xff…

【日志1】rsyslog,logrotate,post_code,journalctl

文章目录 1.rsyslog&#xff1a;rsyslogd一个进程 &#xff0c;管理每个进程发来的log并往/var/log里写&#xff0c;syslog函数将log写给rsyslogd进程&#xff0c;rsyslogd -v2.logrotate&#xff1a;logrotate /etc/logrotate.rsyslog&#xff08;bb中重命名&#xff09;3.pos…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 26 日论文合集)

文章目录 一、检测相关(4篇)1.1 Bridging the Performance Gap between DETR and R-CNN for Graphical Object Detection in Document Images1.2 Cascade Subspace Clustering for Outlier Detection1.3 Lesion Detection on Leaves using Class Activation Maps1.4 Deep Omni-…

UI还不错的视频播放器:GOMPlayerPlus

之前给各位小伙伴们测试过一款叫【完美解码】开源的播放器&#xff0c;今天给各位同学测试了一款小编认为不错的UI视频播放器&#xff0c;大家也可以测试学习下&#xff0c;顺便也可以对比下看看是【完美解码】好用还是【GOMPlayerPlus】好用。 一、简单介绍 这款影音播放器是…

Git Bash介绍

Git Bash介绍 Git是一个版本控制工具&#xff0c;而Git Bash是在Windows系统中运行Git命令的命令行界面工具。您可以使用Git Bash来管理和操作Git仓库。当你在Windows系统上安装Git时&#xff0c;它会默认安装Git Bash。 Git Bash是git(版本管理器)中提供的一个命令行工具&am…

数据库监控与调优【九】—— 索引数据结构

索引数据结构-B-Tree索引、Hash索引、空间索引、全文索引 二叉树查找 对于相同深度的节点&#xff0c;左侧的节点总是比右侧的节点小。在搜索时&#xff0c;如果要搜索的值key大于根节点&#xff08;图中6&#xff09;&#xff0c;就会在右侧子树里查找&#xff1b;key小于根…

制造业开出每月1.8万给程序员?掌握IT技术就是“铁饭碗”

在知乎上看到一个问题&#xff1a; 这个问题的浏览次数超过了七百万次。 今年&#xff0c;许多毕业生面临着就业难问题。社交网站上也疯传着“缩招”、“裁员”的消息&#xff0c;但为什么还是源源不断的有人选择加入IT行业&#xff1f; 真实现状是&#xff0c;在这个智能时代&…

第2讲 Camera Sensor 类型

本讲是Camera Sensor驱动专题的第2讲&#xff0c;我们讲解Camera Sensor的类型。 更多资源&#xff1a; 资源描述在线课程极客笔记在线课程知识星球星球名称&#xff1a;深入浅出Android Camera 星球ID: 17296815Wechat极客笔记圈 Camera Sensor 介绍 Charge-coupled devic…

windows下VScode搭建IDApython脚本开发环境遇到的问题

开发环境 IDA pro 7.7 vscode 最新版 python版本 与IDA 自带python 一致 3.8.10 (小版本号也必须要一致) 安装插件 下载 插件仓库的地址&#xff1a;https://github.com/ioncodes/idacode release版本 将插件安装到 IDApath/plugins/ idacode ->setting.py 设置如下:…

SASE架构的概念

一、概念 SASE 是一种基于实体的身份、实时上下 文、企业安全/合规策略&#xff0c;以及在整个会话中持续 评估风险/信任的服务实体的身份可与人员、人员组&#xff08;分支办公室&#xff09;、设备、应用、服务、物联网系统或边缘计算场地相关联。SASE是一个融合了SD-WAN&am…