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

相关推荐

哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
头像
04-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务