剑指 Offer 57 - II. 和为s的连续正数序列
发布日期:2021-06-20 02:50:21
浏览次数:5
分类:技术文章
本文共 1360 字,大约阅读时间需要 4 分钟。
题目
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例一
输入:target = 9
输出:[[2,3,4],[4,5]]思路
- 用双端队列维护一个连续的窗口,窗口代表了连续的子序列。
代码
class Solution { public: vector> findContinuousSequence(int target) { deque q; int sum = 0; vector > ans; for(int i = 1;i < target;i++){ q.push_back(i); sum += i; while(sum > target && !q.empty()){ sum = sum - q.front(); q.pop_front(); } if(sum == target){ vector tmp; for(int i = 0;i < q.size();i++) tmp.push_back(q[i]); ans.push_back(tmp); } } return ans; }};
思路二
因为队列的操作带来额外的开销。我们直接使用双指针来维护这个窗口的大小。
class Solution { public: vector> findContinuousSequence(int target) { vector > ans; int l = 1, r = 1,sum = 0; while(r < target - 1){ sum += r; r++; while(sum > target){ sum -= l; l++; } if(sum == target){ vector tmp; for(int i = l;i < r;i++) tmp.push_back(i); ans.push_back(tmp); } } return ans; }};
转载地址:https://blog.csdn.net/free1993/article/details/115088845 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月16日 09时37分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
剑指数据结构-平衡二叉树
2019-04-28
剑指数据结构-替换空格
2019-04-28
剑指数据结构-最小的K个数
2019-04-28
剑指数据结构-数据流中的中位数
2019-04-28
数组只出现一次的两个数字
2019-04-28
剑指数据结构-滑动窗口最大值
2019-04-28
第一个只出现一次的字符
2019-04-28
剑指 -扑克牌顺子
2019-04-28
Jetson tx2安装各个版本的pytorch
2019-04-28
Java图形界面编程--抽象类
2019-04-28
Java图形界面编程--接口interface
2019-04-28
Java图形界面编程--通过类本身和匿名类实现ActionListener
2019-04-28
Java图形界面编程--JMenu菜单
2019-04-28
Java图形界面编程--漫天繁星
2019-04-28
Teb参数
2019-04-28
Java I/O流--字节输入输出流
2019-04-28
Java I/O流--字符输入输出流
2019-04-28
Java I/O流--使用字符流完成文件复制
2019-04-28
Java I/O流--缓冲输入输出流
2019-04-28
Java 多线程--多线程Thread类的使用
2019-04-28