题解 | #和为S的连续正数序列#

和为S的连续正数序列

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

大神的滑动窗口解决方案:

import java.util.ArrayList;
public class Solution {
    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
        ArrayList<ArrayList<Integer>> ans = new ArrayList<>();
        //两个下标,分别记录窗口两端
        int plow=1,phigh=2;
        while(plow<phigh){
            //cur表示窗口内数据的和
            int cur = (plow+phigh)*(phigh-plow+1)/2;
            //相等时直接加入列表,然后左侧窗口右移,继续寻找下一部分。
            if(cur == sum){
                ArrayList<Integer> list = new ArrayList<>();
                for(int i=plow;i<=phigh;i++){
                    list.add(i);
                }
                ans.add(list);
                plow++;
            //小于sum则窗口右侧右移
            }else if(cur<sum){
                phigh++;
            //大了,那就将左侧右移,寻找下一个
            }else{
                plow++;
            }
        }
        return ans;
    }
}
全部评论

相关推荐

邮小鼠:粤嵌的项目水的要死 来我们学校带过课程实习 项目名字是车机终端 实际上就是写了了个gui 还是老师把代码发给你你改改的那种
点赞 评论 收藏
分享
11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务