
【剑指Offer 57】js和为S的两个数字
发布日期:2021-05-18 10:46:56
浏览次数:12
分类:原创文章
本文共 741 字,大约阅读时间需要 2 分钟。
和为S的两个数字
题目
输入一个递增排序的数组和一个数字S
,在数组中查找两个数,使得他们的和正好是S
,如果有多对数字的和等于S
,输出两个数的乘积最小的。
思路
数组中可能有多对符合条件的结果,而且要求输出乘积最小的,说明要分布在两侧 比如
3,8
5,7
要取3,8
。
看了题目了,很像leetcode
的第一题【两数之和】,但是题目中有一个明显不同的条件就是数组是有序的,可以使用使用大小指针求解,不断逼近结果,最后取得最终值。
- 设定一个小索引
left
,从0
开始 - 设定一个大索引
right
,从array.length
开始 - 判断
array[left] + array[right]
的值s
是否符合条件 - 符合条件 - 返回
- 大于
sum
,right
向左移动 - 小于
sum
,left
向右移动 - 若
left=right
,没有符合条件的结果
代码
function FindNumbersWithSum(array, sum) { let left = 0; let right = array.length - 1; while (left < right) { const s = array[left] + array[right]; if (s > sum) { right--; } else if (s < sum) { left++; } else { return [array[left], array[right]] } } return [];}
更多资料
整理不易,若对您有帮助,请给个「关注+点赞」,您的支持是我更新的动力 👇
📖数据结构专栏:
🐱Github笔记 :
发表评论
最新留言
不错!
[***.144.177.141]2025年05月08日 11时21分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JDK动态代理的实现原理
2019-03-16
Spring Security 架构与源码分析
2019-03-16
教程丨使用MeterSphere做Dubbo接口测试
2019-03-16
【毕设-STM32f103寄存器版本】智能防盗系统
2019-03-16
勒索病毒Kraken2.0.7分析
2019-03-16
MySQL错误1366处理方法
2019-03-16
pytorch深度学习中每个epoch运行时间的统计代码
2019-03-16
API->DeviceIOControl
2019-03-16
VxWorks 操作系统学习笔记
2019-03-16
链表插入和删除算法
2019-03-16
断言(assert)的用法
2019-03-16
主机与虚拟机(ubuntu)可以互ping,虚拟机不能上网解决办法
2019-03-16
驱动程序之_1_字符设备_13_USB设备_1_基本概念
2019-03-16
wxPython下载安装教程
2019-03-16
HERest源码解析
2019-03-16
【阅读论文】博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病--第二章
2019-03-16
51单片机的复位电路
2019-03-16
OpenCV-Python图像梯度 Scharr算子
2019-03-16