(leetcode)力扣100 55全排列

题目

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

数据范围

1 <= nums.length <= 6

-10 <= nums[i] <= 10

nums 中的所有整数 互不相同

测试用例

示例1

java 复制代码
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

示例2

java 复制代码
输入:nums = [0,1]
输出:[[0,1],[1,0]]

示例3

java 复制代码
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

题解(时间On*n!,空间On)

java 复制代码
class Solution {
        int len;
    public List<List<Integer>> permute(int[] nums) {
        len=nums.length;

        List<List<Integer>> res= new ArrayList<>();

        List<Integer> curr=new ArrayList<>();

        for(int i=0;i<len;i++){
            curr.add(nums[i]);
        }

        dfs(res,curr,0);

        return res;
    }


    public void dfs(List<List<Integer>> res,List<Integer> curr,int u){
        if(u==len){
            res.add(new ArrayList<Integer>(curr));
        }

        for(int i=u;i<len;i++){
            Collections.swap(curr,u,i);
            dfs(res,curr,u+1);
            Collections.swap(curr,u,i);
        }
    }
}

思路

十分简单的一种遍历方法,所以不涉及到什么思路,但是由于时间复杂度过于高实用性其实不高,代码简单记住就行。

相关推荐
想吃火锅10054 分钟前
【leetcode】98.验证二叉搜索树
算法·leetcode·职场和发展
一叶落4385 分钟前
【LeetCode 172】阶乘后的零(C语言详解 | 数学规律 + 对数时间复杂度)
c语言·数据结构·算法·leetcode·动态规划
自信150413057595 分钟前
数据结构初阶——二叉树之——堆的实现
c语言·数据结构·算法
!停13 分钟前
数据结构算法—归并排序
数据结构·算法
骇客野人13 分钟前
机器学习线性回归算法是入门机器学习理解人工智能模型很好示例
人工智能·算法·机器学习
Trouvaille ~21 分钟前
【贪心算法】专题(三):排序、博弈与区间的贪婪法则
c++·算法·leetcode·青少年编程·面试·贪心算法·蓝桥杯
Sakinol#26 分钟前
Leetcode Hot 100 —— 二叉树 part02
算法·leetcode
N1_WEB31 分钟前
HDU:杭电 2017 复试真题汇总
算法
努力学算法的蒟蒻33 分钟前
day111(3.13)——leetcode面试经典150
算法·leetcode·面试
参.商.35 分钟前
【Day37】94.二叉树的中序遍历 递归+迭代遍历
leetcode·golang