【python-leetcode15-双指针】最接近的三数之和
时间:2022-07-23
本文章向大家介绍【python-leetcode15-双指针】最接近的三数之和,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述;
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
解题:
class Solution:
def threeSumClosest(self, nums,target):
#如果数组为空或者长度小于3,返回空
if not nums or len(nums) < 3:
return None
#先排序
nums.sort()
#表示res是无穷大
res = float("inf")
#从左往右遍历数组
for i in range(len(nums)):
#对于重复的值,只需要计算一次即可
if i > 0 and nums[i] == nums[i-1]:
continue
#左指针
l = i + 1
#右指针
r = len(nums) - 1
#核心就是不断增大左指针指向的值和缩小右指针指向的值
#使得三个数的和尽量靠近target
while l < r:
# 记录当前三个数的和
cur = nums[i] + nums[l] + nums[r]
#如果找到等于target的三个数,直接返回即可
if cur == target:
return target
if abs(res-target) > abs(cur-target):
#第一次判断时总是成立的,因为此时res是无穷大
res = cur
if cur > target:#当前值太大了,将右指针左移
r -= 1
else: #当前值太小了,将左指针右移
l += 1
return res
其中很关键的一步就是如何确定初始值,即要让res首先是无穷大。
结果:
- 从网络上下载省份城市名称并存入文件然后进行读取省份城市
- android 应用模式之mvp
- Android网络请求框架之Retrofit实践
- iOS 跳转到应用所在的App Store市场
- 第一章 正则表达式字符匹配攻略
- js最新手机号码、电话号码正则表达式
- iOS afnetworking最新版报错 没有AFHTTPRequestOperationManager类了
- Android Service学习之本地服务
- iOS .pch文件的使用
- CountDownTimer说明及使用
- UiTextField对输入的长度进行限制并提示用户还可输入的长度
- Spring Cloud实战小贴士:turbine如何聚合设置了context-path的hystrix数据
- iOS 查找字符串 相同 子字符串的位置 range
- 自然语言处理指南(第四部分)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Vue.js】Vue.js组件库Element中的折叠面板、时间线、分割线和日历
- 从Properties乱码来学习编码
- 【Vue.js】Vue.js组件库Element中的图片、回到顶部、无限滚动和抽屉
- Java逐行读取和写入文件
- Vuejs使用v-for指令实现九九乘法表
- Cypress系列(43)- visit() 命令详解
- 在GitLab pages上快速搭建Jekyll博客
- Dubbo项目中No provider available for the service xxx from registry xxx on the consumer问题的解决思路
- Mysql面对高并发修改的问题处理【2】
- java (多网卡环境下)发送组播广播(multicast/broadcast)失败问题
- activmq:android平台下使用openwire协议连接activemq服务的问题
- Leetcode No.9 回文数
- go-zero微服务框架入门教程
- 聊聊java中的哪些Map:(九)TreeMap源码分析
- 海康IPCamera结合OpenCV图像处理的一般步骤