剑指offer题解 和为S的连续正数序列
2016-06-24 11:00
495 查看
题目描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
小明很喜欢数学,有一天他在做数学作业时,要求计算出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<ArrayList<Integer> >(); if(sum<3) return result; int start=1; int end=2; int mid=(sum+1)/2; int num=start+end; while(start<mid && end < sum){ if(num==sum){ ArrayList<Integer> temp=new ArrayList<Integer>(); for(int i=start;i<=end;i++){ temp.add(i); } result.add(temp); } while(num>sum&&start<mid){ num-=start; start++; if(num==sum){ ArrayList<Integer> temp=new ArrayList<Integer>(); for(int i=start;i<=end;i++){ temp.add(i); } result.add(temp); } } end++; num+=end; } return result; } }
相关文章推荐
- JS控制文本域只读或可写属性的方法
- HTML4 和 HTML5 的10个关键区别
- js中直接使用el表达式
- node-gdal实践-读写shp数据
- jQuery插件扩展extend的简单实现原理
- js返回上一页并刷新的多种实现方法
- json 对象 数组
- bootstrap的一些资源
- jQuery设置单选按钮radio选中/不可用的实例代码
- ExtJs自学教程(2):从DOM看EXTJS
- ExtJs自学教程(1):一切从API开始
- 原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y
- react 组件的生命周期
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- jQuery模仿单选按钮选中效果
- jQueryEasyUI Messager基本使用
- js数组排序
- 配置hadoop2.X的namenode HA及Yarn HA
- Gson中JsonElement的简单说明
- 剑指offer---从尾到头打印链表