JZ41:和为S的连续正数序列

和为S的连续正数序列

http://www.nowcoder.com/practice/c451a3fd84b64cb19485dad758a55ebe

思路:
连续序列的最大数big,最小数small;区间之和为Sum

import java.util.ArrayList;
public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum){
        ArrayList<ArrayList<Integer>> res=new ArrayList<>();
        int small=1;
        int big=2;
        if(sum<3){
            return res;
        }
        while(small<big){//small !=(sum+1)/2
            int s=SumOf(small,big);
            if(sum==s){
                ArrayList<Integer> list=new ArrayList<>();
                for(int i=small;i<=big;i++){
                    list.add(i);
                }
                res.add(list);//  res.add(new ArrayList<>(list)); list.clear();
                big++;
            }
            else if(s>sum){
                small++;
            }
            else{
                big++;
            }
        }
        return res;
    }

    public int SumOf(int small,int big){
        int sum=0;
        for(int i=small;i<=big;i++){
            sum=sum+i;
        }
        return sum;
    }
剑指Offer题解 文章被收录于专栏

剑指Offer-Java版本题解

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务