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

和为S的连续正数序列

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

import java.util.ArrayList;
import java.util.LinkedList;
public class Solution {
    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
        ArrayList<ArrayList<Integer>> ans = new ArrayList<ArrayList<Integer>>();
        LinkedList<Integer> a1List = new LinkedList<>();
        LinkedList<Integer> iList = new LinkedList<>();
        int s = 1;
        for(int i = 2; ;i++) {
            if(sum < s + i) {
                break;
            }
            int a1 = (sum - s) / i;
            if(a1 > 0 && a1 * i == (sum - s)) {
                a1List.addLast(a1);
                iList.addLast(i);
            }
            s += i;
        }
        while(a1List.size() > 0) {
            int a1 = a1List.getLast();
            int i = iList.getLast();
            a1List.removeLast();
            iList.removeLast();
            ArrayList<Integer> oneSln = new ArrayList<Integer>();
            for(int j = 0; j < i; j++) {
                oneSln.add(a1 + j);
            }
            ans.add(oneSln);
        }
        return ans;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务