一种新的方式求解全排列(46. 全排列)

简介: 一种新的方式求解全排列(46. 全排列)

正文


1. 题目表述


给定一个 没有重复 数字的序列,返回其所有可能的全排列。

示例:

输入: [1,2,3]输出:

[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]


2.编写代码


class Solution {
   int[] tag;
   int[] temp;
   List<List<Integer>> permute=new ArrayList<>();
   public List<List<Integer>> permute(int[] nums) {
       tag = new int[nums.length];
       temp = new int[nums.length];
       int index = 0;
       for (int i = 0; i < nums.length; i++) {
           if (tag[i] == 0) {
               tag[i] = 1;
               temp[i] = nums[index];
               permute(nums, index+1);
               tag[i] = 0;
          }
      }
       return permute;
  }
   private void permute(int[] nums, int i) {
       if (i < nums.length) {
           for (int j = 0; j < nums.length; j++) {
               if (tag[j] == 0) {
                   tag[j] = 1;
                   temp[j] = nums[i];
                   permute(nums, i+1);
                   tag[j] = 0;
              }
          }
      }else {
           ArrayList<Integer> objects = new ArrayList<>();
           for (int j = 0; j < nums.length; j++) {
               objects.add(temp[j]);
          }
           permute.add(objects);
           //System.out.println(Arrays.toString(temp));
      }
  }
}


3. 代码的思路


该题求解的是全排列,思考了一下,我发现可以用标记数组以及中间数组的方式就可以解决我们的问题,在用递归的方式即可解答。

运行结果:

12.png

相关文章
|
7月前
|
机器学习/深度学习 存储 算法
【算法训练-回溯算法 一】【排列问题】全排列、全排列II
【算法训练-回溯算法 一】【排列问题】全排列、全排列II
99 0
|
7月前
|
算法
简记二分算法模板与代码案例:整数二分和浮点数二分
本文介绍了两种算法模板,分别是整数二分和浮点数二分。
57 0
|
7月前
|
算法 测试技术 C++
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
|
7月前
|
存储 算法
算法题解-除自身以外数组的乘积
算法题解-除自身以外数组的乘积
|
机器学习/深度学习 存储 算法
算法训练Day29|* 491.递增子序列* 46.全排列* 47.全排列 II
算法训练Day29|* 491.递增子序列* 46.全排列* 47.全排列 II
|
存储 人工智能 算法
【双指针、位运算、离散化、区间合并】思路讲解及代码实现
用一篇Blog来讲解下最近学到的双指针、位运算、离散化、区间合并等算法,为日后的刷题打下坚实的基础。
108 0
|
算法
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
104 0
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
汉诺塔问题, 用递归方法求集合中的中位数
汉诺塔问题, 用递归方法求集合中的中位数
康托展开公式与全排列应用
康托展开公式与全排列应用
135 0

热门文章

最新文章