题解 | #和为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;
}
}