(leetcode)力扣100 55全排列

题目

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

数据范围

1 <= nums.length <= 6

-10 <= numsi <= 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);
        }
    }
}

思路

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

相关推荐
.道阻且长.8 小时前
2.LeetCode算法习题讲解--双指针--复写零
算法·leetcode·职场和发展
To_OC10 小时前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode
Forever Nore13 小时前
学完C语言力扣第一题做不来正常吗
数据结构·算法
hansang_IR13 小时前
【题解】LC:倍增 / 区间并查集(Range Parallel Unionfind)
c++·算法·并查集
Tisfy15 小时前
LeetCode 3731.找出缺失的元素:哈希 / 排序
算法·leetcode·哈希算法·排序·哈希表
lucas_AI15 小时前
Q-CueGraph:你的多模态大模型会 zoom,但真的知道该看哪儿吗?
人工智能·算法
kaixin_啊啊15 小时前
test_机器学习算法学习
学习·算法·机器学习
liulilittle15 小时前
MOE路由:路由(logits: top-k/8)
c++·人工智能·算法·机器学习·llm
旖旎夜光15 小时前
LeetCode 11:盛最多水的容器(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针