面试题:和为S的连续正数列
题目描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
输出的应该是若干数字序列
从第几个数开始判断,一共要累加几个
代码:
import java.util.*; public class Solution { public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) { ArrayList<ArrayList<Integer>> ans=new ArrayList<>(); for(int n=(int)Math.sqrt(sum*2);n>=2;n--){ //并不是所有的奇数偶数都能被执行,比如4就不能 if((n&1)==1&&sum%n==0||(sum%n)*2==n){ ArrayList<Integer> list=new ArrayList<>(); for (int j=0,k=(sum/n)-(n-1)/2;j<n;j++,k++){ list.add(k); } ans.add(list); } } return ans; } }