
【剑指Offer 57 Ⅱ】js 和为S的人连续正整数序列
发布日期:2021-05-18 10:46:57
浏览次数:22
分类:精选文章
本文共 1093 字,大约阅读时间需要 3 分钟。
和为S的人连续正整数序列
题目
输入一个正数S
,打印出所有和为S的连续正数序列。
例如:输入15
,有序1+2+3+4+5
= 4+5+6
= 7+8
= 15
所以打印出3个连续序列1-5
,5-6
和7-8
。
思路
- 创建一个容器
child
,用于表示当前的子序列,初始元素为1,2
- 记录子序列的开头元素
small
和末尾元素big
big
向右移动子序列末尾增加一个数small
向右移动子序列开头减少一个数- 当子序列的和大于目标值,
small
向右移动,子序列的和小于目标值,big
向右移动
代码
function FindContinuousSequence(sum) { const result = []; const child = [1, 2]; let big = 2; let small = 1; let currentSum = 3; while (big < sum) { //序列和小于目标值 且big小于目标值执行,直至超过目标值 //存入数组,sum变化,big右移 while (currentSum < sum && big < sum) { child.push(++big); currentSum += big; } //序列和大于目标值,且指针没越位,直至越位 while (currentSum > sum && small < big) { //移除child的第一个元素 child.shift(); //左指针自增 sum变化。 currentSum -= small++; } //如果值符合,且序列个数>1,存入结果数组,继续寻找。 if (currentSum === sum && child.length > 1) { result.push(child.slice()); child.push(++big); currentSum += big; } } return result;}
更多资料
整理不易,若对您有帮助,请给个「关注+点赞」,您的支持是我更新的动力 👇
📖数据结构专栏:
🐱Github笔记 :发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月30日 23时17分23秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
浏览器打开winscp 系统错误。代码:5。 拒绝访问。
2019-03-17
Oracle Listener动态注册与静态注册(转载)
2019-03-17
Hibenate访问Oracle数据库异常:ORA-00911: 无效字符
2019-03-17
MyBatis直接执行SQL查询及批量插入数据
2019-03-17
分布式锁与Transactional 导致锁失效
2019-03-17
Kubernetes 无法查询到并且无法删除pod实例的排查过程
2019-03-17
Sonarqube 不同产品价格
2019-03-17
VMWare虚拟机提示:“锁定文件失败,打不开磁盘或快照所依赖的磁盘”的解决方法
2019-03-17
Hadoop集群启动常见异常
2019-03-17
ForkJoinPool线程池
2019-03-17
android中button修改不了背景颜色
2019-03-17
Web开发中两种导出文件的思路
2019-03-17
uniapp自定义弹窗组件|仿微信android/ios弹窗效果
2019-03-17
单通道图像转3通道图像,以fashionminist数据集为例
2019-03-17
codeforce 460B Little Dima and Equation
2019-03-17
【Android-混合开发】mPaas-多版本接入篇
2019-03-17
Python采集3000条北京二手房数据,看我都分析出了啥?
2019-03-17