码迷,mamicode.com
首页 > 其他好文 > 详细

46. 全排列

时间:2020-04-04 17:25:52      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:tco   box   ems   code   blank   全排列   pre   ida   重复   

题目描述查看:https://leetcode-cn.com/problems/permutations/

  题目的意思是,给定一个无重复数组,求这些数组元素的全排列。

  • 思路

  典型的回溯问题,找到退出条件,已选结果,候选结果即可。

定义回溯方法,choose表示已选结果,candidate表示候选结果。

private void permuteHelper(List<Integer> choose,List<Integer> candidate)

退出条件是candidate中没有元素。

        if(candidate.isEmpty()) {
            List<Integer> save = new ArrayList<>(choose);
            reuslt.add(save);
            return;
        }
  • 代码

 1 public class Main {
 2     private List<List<Integer>> reuslt = new ArrayList<>();
 3 
 4     public List<List<Integer>> permute(int[] nums) {
 5         List<Integer> choose = new ArrayList<>();
 6         List<Integer> candidate = Arrays.stream(nums).boxed().collect(Collectors.toList());
 7         permuteHelper(choose,candidate);
 8         return reuslt;
 9     }
10 
11     private void permuteHelper(List<Integer> choose,List<Integer> candidate){
12         if(candidate.isEmpty()) {
13             List<Integer> save = new ArrayList<>(choose);
14             reuslt.add(save);
15             return;
16         }
17 
18         for (int i = 0; i < candidate.size(); i++) {
19             choose.add(candidate.get(i));
20             List<Integer> tmp = new ArrayList<>(candidate);
21             tmp.remove(i);
22             permuteHelper(choose,tmp);
23             choose.remove(choose.size()-1);
24         }
25     }

 

46. 全排列

标签:tco   box   ems   code   blank   全排列   pre   ida   重复   

原文地址:https://www.cnblogs.com/vshen999/p/12632691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!