如何解决leetcode中三数之和的问题
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,这篇文章给大家分享的是有关如何解决leetcode中三数之和的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。题目链接https://leetcode-cn.com/pr
千家信息网最后更新 2025年02月07日如何解决leetcode中三数之和的问题
这篇文章给大家分享的是有关如何解决leetcode中三数之和的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
题目链接
https://leetcode-cn.com/problems/3sum-closest/
题目描述
给定一个包括 n
个整数的数组 nums
和 一个目标值 target
。找出 nums
中的三个整数,使得它们的和与 target
最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
解题方案
思路
标签:排序和双指针
本题目因为要计算三个数,如果靠暴力枚举的话时间复杂度会到O(n^3),需要降低时间复杂度
首先进行数组排序,时间复杂度O(nlogn)
在数组nums中,进行遍历,每遍历一个值利用其下标i,形成一个固定值nums[i]
再使用前指针指向
start = i + 1
处,后指针指向end = nums.length - 1
处,也就是结尾处根据
sum = nums[i] + nums[start] + nums[end]
的结果,判断sum与目标target的距离,如果更近则更新结果ans同时判断sum与target的大小关系,因为数组有序,如果
sum > target
则end--
,如果sum < target
则start++
,如果sum == target
则说明距离为0直接返回结果整个遍历过程,固定值为n次,双指针为n次,时间复杂度为O(n^2)
总时间复杂度:O(nlogn) + O(n^2) = O(n^2)
代码
class Solution { public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); int ans = nums[0] + nums[1] + nums[2]; for(int i=0;itarget) end--; else if(sum < target) start++; else return ans; } } return ans; }}
画解
感谢各位的阅读!关于"如何解决leetcode中三数之和的问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
复杂
复杂度
数组
时间
指针
个数
结果
题目
之和
问题
内容
指向
整数
更多
目标
篇文章
排序
不错
实用
有序
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
卫星互联网硬科技公司
查数据库最后几条数据
武汉理工大学查重数据库
乌班图服务器能够搭建博客么
数据仓库能替代操作型数据库吗
云鼎网络安全海报
服务器安装ftp安全么
盈趣科技与工业互联网
手机版惠普打印服务器
数据库如何锁定文件
网络安全 打击
拼接处理服务器和拼接处理器
厦门网络技术工资待遇
我的世界进服务器给管理员
做软件测试用的软件开发
数据库跟网络技术区别
中国使用南非服务器吗
兆美网络技术有限公司
微信coc数据库怎么用
2021苏州网络安全宣传周
俄国网络安全高官认定
西奥小镇怎么创建服务器
彩票k线分析软件开发
网络安全中逻辑安全概述
河南飞普网络技术有限责任公司
前台和数据库的连接步骤是什么
网络安全原因英语作文
网络安全的看法的作文
光伏网络技术与应用专业
数据库怎么查看数据表数量