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

和为S的连续正数序列

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

import java.util.ArrayList;
public class Solution {
    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        int start=1,end=2;
        int curSum=3;
        while(end<=(sum+1)/2){
            if(curSum<sum){
                end++;
                curSum = curSum+end;
            }
            else if(curSum>sum){
                curSum -= start;
                start++;
            }
            else{
                ArrayList<Integer> list = new ArrayList<>();
                for(int i=start;i<=end;i++){
                    list.add(i);
                }
                res.add(list);
                end++;
                curSum += end;
                curSum -=start;
                start++;
            }
        }
        return res;
    }
}
  1. 对于和为S的连续正数序列,且要求至少两个连续正数。利用滑动窗口的知识,设置左边界start=1,右边界end=2,初始总和为curSum=3;
  2. 将curSum与sum进行比较。若小于sum,右边界++(注意先end++,再curSum+end);若大于sum,左边界++;若等于sum,则找到一个连续序列。
  3. 对于循环的次数,只需while(end<=(sum+1)/2)。
全部评论

相关推荐

05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务