Java----------LeetCode----------46. 全排列

简介: 说起回溯算法,渊源颇深,我上次做过一道,本应该这次能拿下但是,又没拿下,不过这次有点理解它的思想了,每次的回溯就是一个二叉树,简单的说,就是你执行的操作需要回溯时它会返回调用它的方法哪里的状态,进行下一步的执行。

说起回溯算法,渊源颇深,我上次做过一道,本应该这次能拿下但是,又没拿下,不过这次有点理解它的思想了,

每次的回溯就是一个二叉树,简单的说,就是你执行的操作需要回溯时它会返回调用它的方法哪里的状态,进行下一步的执行。

public List<List<Integer>> permute(int[] nums) {
    List<List<Integer>> temp = new ArrayList<>(20);
    zuhe(temp,0,nums);
    return temp;
}

private void zuhe(List<List<Integer>> temp, int n, int[] nums) {
    /*
    * 每次让其加一个就行了,就空了,
    * */
    if (nums.length == n) {
        List<Integer> integers =new ArrayList<>(20);
        for (int r:nums){
            integers.add(r);
        }
        temp.add(integers);
    }

    for (int i = n, length = nums.length; i <length ; i++) {
        change(nums,i,n);
        zuhe(temp,n+1,nums);
        change(nums,i,n);
    }
}
public void change(int[] nums, int i, int j) {
    int temp = nums[i];
    nums[i] = nums[j];
    nums[j] = temp;
}
AI 代码解读

这个需要多练,具体自己体会

目录
打赏
0
0
0
0
2
分享
相关文章
全排列(分治)(Java语言 +全排列模板)
全排列(分治)(Java语言 +全排列模板)
46 2
|
3月前
|
Leetcode第46题(全排列)
这篇文章介绍了LeetCode第46题“全排列”的解题方法,使用深度优先搜索(DFS)和回溯算法来生成给定数组的所有可能排列。
49 0
Leetcode第46题(全排列)
|
3月前
Leetcode第47题(全排列II)
LeetCode第47题要求返回一个包含重复数字序列的所有不重复全排列,通过深度优先搜索和去重策略来解决。
38 0
LeetCode第46题全排列
LeetCode第46题"全排列"的解题方法,利用回溯法避免重复并确保元素的有序性,生成所有可能的排列组合。
LeetCode第46题全排列
LeetCode第47题全排列II
LeetCode第47题"全排列II"的解题方法,通过排序和添加去重逻辑,使用回溯法避免生成重复的排列组合。
|
5月前
|
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
64 0
|
5月前
|
【Leetcode刷题Python】46. 全排列
本文介绍了LeetCode题目46的Python编程解决方案,题目要求给定一个不含重复数字的数组,返回该数组所有可能的全排列。
31 0
|
8月前
|
Go
golang力扣leetcode 47.全排列II
golang力扣leetcode 47.全排列II
90 0
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
|
8月前
|
leetcode代码记录(全排列 II
leetcode代码记录(全排列 II
66 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等