剑指offer—和为s的连续正数序列
来源:互联网 发布:新日铁住金软件怎么样 编辑:程序博客网 时间:2024/05/03 13:56
题目描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
import java.util.ArrayList;public class Solution { public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); if(sum<3) return res; int small = 1; int big = 2; int target = 3; ArrayList<Integer> temp = new ArrayList<Integer>(); temp.add(small); temp.add(big); while(small<(sum+1)/2){ if(target==sum){ res.add(new ArrayList<Integer>(temp)); big++; target += big; temp.add(big); }else if(target<sum){ big++; target += big; temp.add(big); }else{ target -= small; small++; temp.remove(0); } } return res; }}
思路:两个指针,第一个small,第二个big,small初始值为1,而big的初始值为2,当序列和小于target时,big加1,并且这一个新的big值加入序列,当序列和大于target时,small加1,并将最小的值移除序列,依次循环,为了满足一个序列最少两个值,则s必须<=(sum+1)/2
阅读全文
0 0
- 剑指offer—和为S的连续正数序列
- 剑指offer—和为s的连续正数序列
- 剑指offer — 和为S的连续正数序列
- 剑指offer 41 和为S的连续正数序列
- 【剑指offer】Q41:和为s的连续正数序列
- 剑指offer--和为S的连续正数序列
- 《剑指offer》和为S的连续正数序列
- 剑指offer-和为S的连续正数序列
- 剑指offer:和为S的连续正数序列
- 剑指offer:和为S的连续正数序列
- 剑指offer 和为S的连续正数序列
- [剑指offer]和为S的连续正数序列
- 剑指offer 之 和为S的连续正数序列
- 剑指offer题解 和为S的连续正数序列
- 剑指offer|和为S的连续正数序列
- 《剑指offer》-和为S的连续正数序列
- 剑指Offer: 和为S的连续正数序列
- 剑指offer(21)-和为S的连续正数序列
- mamp pro中mysql报错解决
- 【配置阿里云】申请配置阿里云服务器,并部署IIS和开发环境,项目上线经验
- sql学习
- JQ坑1
- 成员变量与局部变量的区别
- 剑指offer—和为s的连续正数序列
- faster-rcnn中的RPN原理
- Android5.0及以上系统WebView上传图片遇到的那些坑
- Unix操作系统常用命令
- select 远程加载数据后,无法选中选项
- 语义网基础教程 (第一版) 1 语义网概览
- Kafka日志清理过程
- ABAP HASH TABLE 主键重复时
- Interface 与 abstract 类的区别