题解 |#合为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;
    }
}
全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务