双向队列 低复杂度实现

和为S的连续正数序列

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

import java.util.*;
public class Solution {
    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
       ArrayList<ArrayList<Integer> > res = new ArrayList<>();
        if(sum < 2){
            return res;
        }
        Deque<Integer> deque = new LinkedList<>();
        int count = 0;
        for(int i = 1; i <= sum / 2 + 1; i++){
            count += i;
            deque.addLast(i);
            if(count > sum) {
                while (count > sum) {
                    count -= deque.pollFirst();
                }
            }
            if(count == sum){
                res.add(new ArrayList<>(deque));
            }
        }
        return res;
    }    
}
全部评论

相关推荐

点赞 评论 收藏
分享
emo的打工鸭又被画饼了:我看你是外星人,听哥劝,你不应该来地球找工作的,地球要996的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务