【刷题记录】46. 全排列

简介: 【刷题记录】46. 全排列


一、题目描述


来源:力扣(LeetCode)


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


示例 1:


输入: nums = [1,2,3]

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


示例 2:


输入: nums = [0,1]

输出: [[0,1],[1,0]]


示例 3:


输入: nums = [1]

输出: [[1]]


提示:


  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • nums 中的所有整数 互不相同


二丶思路分析


**回溯** 比较典型的回溯问题,就不再说多了,直接开干


三、代码实现

public class Solution {
    public List<List<Integer>> permute(int[] nums) {
        int length = nums.length;
        List<List<Integer>> res = new ArrayList<>();
if (length ==0) {
            return res;
        }
        boolean[] used = new boolean[length];
        List<Integer> path = new ArrayList<>();
        dfs(nums, length, 0, path, used, res);
        return res;
    }
    private void dfs(int[] nums, int len, int depth,
                     List<Integer> path, boolean[] used,
                     List<List<Integer>> res) {
if (depth == len) {
            res.add(path);
            return;
        }
for (int i =0; i < len; i++) {
if (!used[i]) {
                List<Integer> newPath = new ArrayList<>(path);
                newPath.add(nums[i]);
                boolean[] newUsed = new boolean[len];
                System.arraycopy(used, 0, newUsed, 0, len);
                newUsed[i] =true;
                dfs(nums, len, depth +1, newPath, newUsed, res);
            }
        }
    }
}


复杂度分析


  • 时间复杂度:
    网络异常,图片无法展示
    |
    ,其中 n 为序列的长度
  • 空间复杂度:
    网络异常,图片无法展示
    |


运行结果


网络异常,图片无法展示
|


总结


回溯问题是一个十分常见的问题,并且用途也是十分的广泛,我们一定要理解他的核心思想,并熟练掌握。


继续加油~~

目录
相关文章
【LeetCode-每日一题】-718. 最长重复子数组
【LeetCode-每日一题】-718. 最长重复子数组
|
1月前
|
C#
【力扣每日一题/04】57. 插入区间
【力扣每日一题/04】57. 插入区间
|
存储
【刷题记录】18. 四数之和
【刷题记录】18. 四数之和
98 0
【刷题记录】18. 四数之和
|
算法
【刷题记录】5. 最长回文子串
【刷题记录】5. 最长回文子串
126 0
【刷题记录】5. 最长回文子串
|
算法
【刷题记录】1. 两数之和
【刷题记录】1. 两数之和
97 0
【刷题记录】1. 两数之和
【刷题记录】14.最长公共前缀
【刷题记录】14.最长公共前缀
123 0
【刷题记录】14.最长公共前缀
【刷题记录】36. 有效的数独
【刷题记录】36. 有效的数独
124 0
【刷题记录】36. 有效的数独
【刷题记录】9. 回文数
【刷题记录】9. 回文数
78 0
【刷题记录】9. 回文数
【刷题记录】15.三数之和
【刷题记录】15.三数之和
114 0
【刷题记录】15.三数之和
剑指offer 数组专题 刷题记录(2)
剑指offer 数组专题 刷题记录(2)
105 0
剑指offer 数组专题 刷题记录(2)