文巾解题 16. 最接近的三数之和
1 题目描述
2 解题思路:排序+双指针
大体上思路和文巾解题 15. 三数之和_刘文巾的博客-CSDN博客是一样的
我们对整个数组进行升序排序。然后:
1)假设数组的长度为 n,我们先枚举 a,它在数组中的位置为 i;
2)为了防止重复枚举,我们在位置 [i+1, n) 的范围内枚举 b 和 c。
借助双指针,我们就可以对b和c的枚举的过程进行优化。初始时,bp指向位置 i+1,即左边界;c指向位置 n-1,即右边界。在每一步枚举的过程中,我们用 a+b+c来更新答案,并且:
1--如果a+b+c≥target,那么就将c 向左移动一个位置;(减小a+b+c的值)
2--如果a+b+c<target,那么就将 b向右移动一个位置。(增大a+b+c的值)
和15一样,枚举a,b,c 中任意元素并移动指针时,可以直接将其移动到下一个与这次枚举到的不相同的元素,减少枚举的次数。
class Solution:def threeSumClosest(self, nums: List[int], target: int) -> int:nums.sort()
#对数组进行排序ret=10**7
#我们需要的和结果最接近的值l=len(nums)for a in range(l):
#如果当前a的值和前一个值是一样的,那么可以直接跳过。因为这一个a对应的值之前已经考虑过了if(a!=0 and nums[a-1]==nums[a]):continueb=a+1c=l-1while(b<c):
#结束条件不能是b≤c,因为要三个不一样的数if(b!=a+1 and nums[b-1]==nums[b]):b+=1continue
#相同的b不用考虑if(c!=l-1 and nums[c+1]==nums[c]):c-=1continue
#相同的c不用考虑tmp=nums[a]+nums[b]+nums[c]if(abs(ret-target)>abs(tmp-target)):ret=tmp
#看当前的值是不是比目前最接近的值更接近,如果是的话更新最接近的值if(tmp>target):c-=1
#减少下一个tmp的值elif(tmp==target):return tmp
#相等,差距为0,直接返回else:b+=1
#增大下一个tmp的值return(ret)
文巾解题 16. 最接近的三数之和相关推荐
- Java实现 LeetCode 16 最接近的三数之和
16. 最接近的三数之和 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存 ...
- Leetcode算法Java全解答--16. 最接近的三数之和
Leetcode算法Java全解答–16. 最接近的三数之和 文章目录 Leetcode算法Java全解答--16. 最接近的三数之和 题目 想法 结果 总结 代码 我的答案 暴力破解 滑动列表 大佬 ...
- LeetCode 15三数之和16最接近的三数之和
三数之和(双指针) 题意: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...
- leetcode 16. 3Sum Closest | 16. 最接近的三数之和(双指针)
题目 https://leetcode.com/problems/3sum-closest/ 题解 方法1:固定 L,双指针找 M.R 时间复杂度 O(n^2),推荐此方法. 证明不会有元素遗漏,详见 ...
- LeetCode15. 三数之和 16. 最接近的三数之和
LeetCode15. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组 ...
- leetcode —— 16. 最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如,给定数 ...
- leetcode 16.最接近的三数之和
题目 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如, ...
- LeetCode 16. 最接近的三数之和(固定左端+滑动窗口)
1. 题目 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. ...
- LeetCode 16. 最接近的三数之和 3Sum Closest
给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如,给定数 ...
最新文章
- 关于学习Python的一点学习总结(27->关键字参数和默认值)
- ubuntu 16.04 python3 使用ryu
- spark学习(二)
- 希尔伯特曲线的绘制c语言,用四叉树和希尔伯特曲线做空间索引
- 使用 IAsyncResult 进行 .NET 异步编程
- cisco路由器 三层交换机简单环境配置实例(图)
- android studio moudel,Android Studio将module变为library
- 在Session中放HashMap在Jsp中用JSTL遍历方法
- Android SDK下载安装及配置教程
- php开源bi,Poli 简单易用的开源 BI 软件使用教程
- 华为服务器通过ilo虚拟光驱,如何通过ilo开启服务器远程桌面
- iOS 清理缓存方法
- 2021年湖北省区块链技术应用创新创业大赛已正式启动,欢迎报名参赛
- BERT简介及中文分类
- 重庆华侨城跨界联合潮牌T.M.D PCP发财潮流文化艺术聚会国庆开档
- UML与Java-- UML类图于Java的基本实现
- 2012网易校园招聘笔试试题
- 脑波设备mindwave二次开发框架
- mobl中的下载的wineclipse版本缺少googlemap.mobl文件库
- 使用最大后验概率学习正态分布的参数
热门文章
- 路由器交换机命令总结
- flash 遮罩层全解
- java多线程中的异常处理
- java Map 怎么遍历
- 自动化WiFI钓鱼工具——WiFiPhisher源码解读
- PAT甲级1055 The World‘s Richest:[C++题解]k路归并
- IDEA中cannot resolve method getBean in applicationContext的解决方法
- 柱状图设置坐标轴名称_职场老鸟珍藏的柱状图技巧
- android分享到新浪微博客户端吗,Android调用手机新浪微博客户端分享
- 抽象方法可以有方法体_抽象类和模板方法设计模式