概述
41.和为S的连续整数序列
题目描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
解题思路:这道题和leetcode上两数之和的问题比较相似,但又不完全一样,由于是连续正数序列,所以我们设置两个指针,开始时L指向1,R指向2,计算L到R之间的数的和与给定的数相比较,若等于给定的数,则将L到R间所有的数是一个符合要求的连续正数序列,L向右移动一位,若小于给定的数,则把R向右移动一位,若大于给定的数,则把L向右移动一位。
public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
ArrayList<ArrayList<Integer>> res=new ArrayList<>();
int L=1;
int R=2;
while(L<R)
{
if((L+R)*(R-L+1)/2==sum)
{
ArrayList<Integer> list=new ArrayList<>();
for(int i=L;i<=R;i++)
{
list.add(i);
}
res.add(list);
L++;
}
else if((L+R)*(R-L+1)/2>sum)
L++;
else
R++;
}
return res;
}
最后
以上就是迅速煎蛋为你收集整理的剑指offer-和为S的连续整数序列的全部内容,希望文章能够帮你解决剑指offer-和为S的连续整数序列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复