首页 > 其他 > 详细

46. Permutations

时间:2016-02-29 07:04:09      阅读:123      评论:0      收藏:0      [点我收藏+]

 和combinations比起来,需要多加一个used的数组标记这个数字有没有被用过。

 1     public List<List<Integer>> permute(int[] nums) {
 2         List<List<Integer>> res = new ArrayList<List<Integer>>();
 3         if(nums == null || nums.length == 0) {
 4             return res;
 5         }
 6         boolean[] used = new boolean[nums.length];
 7         helper(nums, res, new ArrayList<Integer>(), used);
 8         return res;
 9     }
10     
11     private void helper(int[] nums, List<List<Integer>> res, List<Integer> item, boolean[] used) {
12         if(item.size() == nums.length) {
13             if(!res.contains(item)) {
14                 res.add(new ArrayList<Integer>(item));
15             }
16             return;
17         }
18         for(int i = 0; i < nums.length; i++) {
19             if(used[i] != true) {
20                 used[i] = true;
21                 item.add(nums[i]);
22                 helper(nums, res, item, used);
23                 item.remove(item.size() - 1);
24                 used[i] = false;
25             }
26         }
27         return;
28     }

 

46. Permutations

原文:http://www.cnblogs.com/warmland/p/5226232.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!