剑指offer——和为S的连续正数序列(基本思路)
来源:互联网 发布:数据库集群方案 编辑:程序博客网 时间:2024/05/17 08:15
题目描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
思路:
题目要求加数是连续的且为正数,其次,要求出所有的可能情况。
首先想到要减少搜索范围。以数字n为例,和为n的连续子数列,数列中的最小值不会超过n/2(向上取整)。
import java.util.ArrayList;public class Solution { public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum) { ArrayList<ArrayList<Integer>> list = new ArrayList<>(); for(int i = 1; i<sum/2+1; i++){ int result = 0; int j = i; boolean judge = false; for(; j<sum; j++){ result += j; if(result>=sum){ if(result==sum) judge = true; break; } } if(judge==true){ ArrayList<Integer> temp = new ArrayList<>(); for(int k = i; k<=j; k++) temp.add(k); list.add(temp); } } return list; }}
其他做法()
public class Solution { public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum) { ArrayList<ArrayList<Integer>> lists=new ArrayList<ArrayList<Integer>>(); if(sum<=1){return lists;} int small=1; int big=2; while(small!=(1+sum)/2){ //当small==(1+sum)/2的时候停止 int curSum=sumOfList(small,big); if(curSum==sum){ ArrayList<Integer> list=new ArrayList<Integer>(); for(int i=small;i<=big;i++){ list.add(i); } lists.add(list); small++;big++; }else if(curSum<sum){ big++; }else{ small++; } } return lists; } public int sumOfList(int head,int leap){ //计算当前序列的和,也可以直接用数据公式做 int sum=head; for(int i=head+1;i<=leap;i++){ sum+=i; } return sum; }}
阅读全文
0 0
- 剑指offer——和为S的连续正数序列(基本思路)
- 剑指offer—和为S的连续正数序列
- 剑指offer—和为s的连续正数序列
- 剑指offer — 和为S的连续正数序列
- 剑指Offer——(42)和为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的连续正数序列
- 从互联网进化的角度看AI+时代的巨头竞争
- jsp——9大内置对象
- 输入域名到显示网页的网络过程
- Rviz教程(七):Plugins: New Display Type
- 2017暑假七林集训day8
- 剑指offer——和为S的连续正数序列(基本思路)
- 单片机—LED灯(一)
- String:strStr()求一个字符串在另一个字符串中第一次出现的索引
- 阿里巴巴的相关-----ODPS技术架构、Java Web架构、PAI机器学习平台
- EVP 对称加密
- ------区间DP hdu 5115
- shell变量
- hdu 1248 寒冰王座
- 面试问题收藏