【追求进步】和为S的连续正数序列
来源:互联网 发布:手机sql注入 编辑:程序博客网 时间:2024/05/01 12:52
本题跟蘑菇街面试出的输入指定和为K的任意两个数字在递增数字中:
参考一下链接:
点击打开链接
题目描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
在线代码:
import java.util.ArrayList;public class Solution { public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) { ArrayList<ArrayList<Integer>> result=new ArrayList<>(); //边界处理 if(sum<3){ return result; } //初始化变量 int small=1; int big=2; int mid=(1+sum)/2; int cursum=small+big; //small序列增加在mid的时候就停止 while(small<mid){ //如果当前和等于sum,则打印small到big之间的连续序列 if(cursum==sum){ ArrayList<Integer> list=new ArrayList<>(); for(int i=small;i<=big;i++){ list.add(i); } result.add(list); } //如果当前和大于sum while(cursum>sum&&small<mid){ //当前和去掉最小的small序列 cursum-=small; //small序列向前移动 small++; //然后遇到相等则打印small到big之间的连续序列 if(cursum==sum){ ArrayList<Integer> list=new ArrayList<>(); for(int i=small;i<=big;i++){ list.add(i); } //将list2添加进去result中 result.add(list); } } //否则big一直加 big++; //当前和一直累加 cursum+=big; } return result; }}
0 0
- 【追求进步】和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为s的连续正数序列
- 和为s的连续正数序列
- 和为s的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为s的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- setValueForKey方法重写
- [ERP]IPQC是什么意思?IPQC工作职责和IPQC工作流程
- 剑指offer系列之17:二叉树的镜像
- 分治法求解最近点距
- 继承自定义类时,该类不能用@class导入
- 【追求进步】和为S的连续正数序列
- 重复利用的东西,记得最后清空
- HDU 2544 最短路(最短路/spfa)
- SDOI2016 Round1总结
- springMVC系列之(三) spring+springMVC集成(annotation方式)
- LeetCode 58. Length of Last Word
- Android平台中进程与线程的基本知识
- 重写系统左滑返回
- static的作用