所有和为S的连续正数序列
2017-06-14 21:23
176 查看
思路:
从递增数组中两个何=和为s的数得到启示,我们也可以设置两个指针,一个指向当前序列的最小的数,一个指向当前序列最大的数。
1)设置两个指针,一个为small指向当前正数序列中最小的数,一个为big指向当前正数序列中最大的数;
2)若是当前的正数序列之和大于S,那么缩小序列范围,让small指针不停往前走,知道等于S停止;
3)若是当前的正数序列之和小于S,那么扩大序列范围,让big指针不停往前走,直到和为S停止;
注意点:设置mid变量,赋值为(1+s)/2,因为何为s的序列至少包括两个数,所以small要小于s的一半;
/*
从递增数组中两个何=和为s的数得到启示,我们也可以设置两个指针,一个指向当前序列的最小的数,一个指向当前序列最大的数。
1)设置两个指针,一个为small指向当前正数序列中最小的数,一个为big指向当前正数序列中最大的数;
2)若是当前的正数序列之和大于S,那么缩小序列范围,让small指针不停往前走,知道等于S停止;
3)若是当前的正数序列之和小于S,那么扩大序列范围,让big指针不停往前走,直到和为S停止;
注意点:设置mid变量,赋值为(1+s)/2,因为何为s的序列至少包括两个数,所以small要小于s的一半;
/*
相关文章推荐
- 输入一个正数n,输出所有和为n的连续正数序列
- 剑指Offer——输入正整数S,打印出所有和为S的连续正数序列(至少含有两个正数)
- 【算法学习-01】 输入一个正数 n,输出所有和为 n 连续正数序列。
- 输入一个正数n,输出所有和为n连续正数序列。
- 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
- 输入一个正数 n,输出所有和为 n 连续正数序列。
- 输入一个正数 n,输出所有和为 n 的连续正数序列 [No. 25]
- 面试题41—相关题目(和为s的所有连续正数序列)
- 输入一个正数n,输出所有和为n连续正数序列。
- 输入一个正数n,输出所有和为n连续正整数序列
- 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
- 输入一个正数n,输出所有和为n连续正数序列。
- 输出所有和为n连续正数序列
- 输入一个正数n,输出所有和为n连续正数序列
- 输出所有和为S的连续正数序列
- 输入一个正数 n,输出所有和为n 连续正数序列。
- Q411:打印所有和为s的连续正数序列
- 网易面试题 输入一个正数n,输出所有和为n连续正数序列
- 输入一个正数s,打印出所有和为s的连续正数序列(至少包含两个数),例如输入15,打印出连续3个序列1-5,4-6,7-8
- 《剑指offer》- 输出所有和为S的连续正数序列