返回所有n位整数,每个整数里的值是单调递增的

问题:

给一个值 n , 返回所有 n 位整数,每个整数里的值是单调递增的。 比如,n = 3,那么长度为3的整数有 123, 124, 125, 134,。。。等。122, 222,这些是不符合条件的。

 1 public class Solution {
 2 
 3     public static void main(String[] args) {
 4         System.out.println(IncreasingNNumbers(3));
 5     }
 6     
 7     public static ArrayList<ArrayList<Integer>> IncreasingNNumbers(int n) {
 8         ArrayList<ArrayList<Integer>> allList = new ArrayList<ArrayList<Integer>>();
 9         ArrayList<Integer> list = new ArrayList<Integer>();
10         
11         if (n <= 0) return allList;
12         helper(allList, list, n, 1);
13         return allList;
14     }
15     
16     public static void helper(ArrayList<ArrayList<Integer>> allList, ArrayList<Integer> list, 
17             int n, int current) {
18         if (current > 9 || list.size() >= n) return;
19         list.add(current);
20         if (list.size() == n) {
21             allList.add(new ArrayList<Integer>(list));
22         }
23         helper(allList, list, n, current + 1);
24         list.remove(list.size() - 1);
25         helper(allList, list, n, current + 1);
26     }
27 }

转载请注明出处

 

posted @ 2015-01-04 09:32  北叶青藤  阅读(194)  评论(0)    收藏  举报