题解 |#合为s的连续正数序列#

和为S的连续正数序列

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

1.构造前缀合数组

2.遍历数组,找到sum-arr[i]是否存在,存在就是一组答案(问题等价数组中找两个合为sum的值)

3.构造答案

import java.util.*;
public class Solution {
    public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum) {
       int i,j;
       int n = sum/2+1;
       int[] arr = new int[n+1];
       Map<Integer,Integer> map = new HashMap<>();
       ArrayList<ArrayList<Integer>> ans = new ArrayList<>();
        
       for(i=1;i<=n;i++)arr[i] = i+arr[i-1];//前缀和数组
       for(i=0;i<=n;i++){
           if(map.containsKey(arr[i]-sum)){
               ArrayList<Integer> list = new ArrayList<>();
               for(j = map.get(arr[i]-sum)+1; j<=i;j++)list.add(j);
               if(list.size()>1)ans.add(list);//至少含两数
           }
           map.put(arr[i],i);
       }
       return ans;
    }
}
全部评论

相关推荐

uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
05-22 17:07
已编辑
门头沟学院 Java
程序员牛肉:都啥时候了还jb打蓝桥杯呢,有限找实习。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
CARLJOSEPH...:宝宝你戾气太大了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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