1.题目 2.解法( 穷举法) import java.util.ArrayList; public class Solution { public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) { ArrayList<ArrayList<Integer>> list = new ArrayList<>(); // 因为要求是正数序列,所以sum至少从3开始 if(sum < 3){ return list; } /** 刚开始min=1, max=2,如果两者之和大于sum,那么min往后移动一位 * 否则max往后移动一位 */ int min = 1; int max = 2; int middle = (sum + 1) / 2; int add = min + max; // min来移动,max到达最大值middle之后,就不能移动 while(min < middle){ if(add == sum){ list.add(printContinuousSeq(min, max)); } // 为了增加值,max会一直移动 while(add < sum && min < middle){ ++max; // 和加上刚移动的max add += max; if(add == sum){ list.add(printContinuousSeq(min, max)); } } add -= min; ++min; } return list; } // 求连续序列的和 public ArrayList<Integer> printContinuousSeq(int min, int max){ ArrayList<Integer> seqList = new ArrayList<>(); for(int i = min; i <= max; i++){ seqList.add(i); } return seqList; } }