LeetCode全排列

这篇具有很好参考价值的文章主要介绍了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]]

var permute = function(nums) {
    const result = [];
            if (nums.length === 1) {
                return [nums];
            } else {  //遍历每一项
                for (let i = 0; i < nums.length; i++) {
                    let first = nums[i];   //拿到当前的元素
                    let left = nums.slice(0, i).concat(nums.slice(i + 1));  //除当前元素的其他元素组合
                    let rest = permute(left);     //上一次递归返回的全排列
                    for (let j = 0; j < rest.length; j++) {    //组合在一起
                        let next = [first].concat(rest[j]);
                        result.push(next);
                    }
                }
            }
        return result;
};

这道题主要是利用了算法的回溯思想,算法的截止条件是当数组里面只剩一个数的时候返回它本身,将每次遍历时的 i 取出,剩下的组成新的数组,新的数组不断地回溯,最终实现全排列,文章来源地址https://www.toymoban.com/news/detail-683501.html

到了这里,关于LeetCode全排列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【算法练习】leetcode算法题合集之二叉树篇

    前序遍历,中序遍历,后序遍历是根据处理根节点的位置来命名的。 树的处理大多用到了递归,递归需要知道终止条件。 前序遍历(中左右) 144.二叉树的前序遍历 中左右,先处理根节点,再处理左子树,再处理右子树 非递归版实现前序遍历 使用栈,当前节点处理完,先塞

    2024年02月01日
    浏览(43)
  • 【数据结构】回溯算法公式化解题 leetcode经典题目带刷:全排列、组合、子集

    一、什么是回溯算法 回溯算法(Backtracking Algorithm)是一种解决 组合问题 、 排列问题 、 选择问题 等一类问题的常用算法。它通过尝试所有可能的选择来找到问题的解,当发现当前选择不符合要求时,就回溯到之前的状态,然后尝试其他的选择。 1、基本思想: 从问题的起

    2024年02月11日
    浏览(45)
  • LeetCode 46 全排列

    全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 示例 2: 示例 3: 提示: 1 = nums.length = 6 -10 = nums[i] = 10 nums 中的所有整数 互不相同 回溯法 这个问题可以看作有 n 个排列成一行的空格,我们需要从左往右依此填

    2024年01月19日
    浏览(40)
  • 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]] 这道题主要是利用了算法的

    2024年02月10日
    浏览(85)
  • LeetCode刷题——46.全排列

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

    2024年02月12日
    浏览(33)
  • 【LeetCode-中等题】46. 全排列

    1、子集去重版本 2、组合去重版本 3、子集非去重版本 这题中nums中的数各不相同,所以不需要去重: 而下面这题,nums中的数会存在重复值,就需要去重: 参考讲解视频:代码随想录—全排列不去重版本 关键在于递归之后还要还原做回溯动作: 所以最后,我们统计到的res才

    2024年02月09日
    浏览(52)
  • LeetCode 31题:下一个排列

    目录 题目 思路 代码 整数数组的一个  排列   就是将其所有成员以序列或线性顺序排列。 例如, arr = [1,2,3]  ,以下这些都可以视作  arr  的排列: [1,2,3] 、 [1,3,2] 、 [3,1,2] 、 [2,3,1]  。 整数数组的  下一个排列  是指其整数的下一个字典序更大的排列。更正式地,如果数

    2024年02月13日
    浏览(114)
  • LeetCode2741.特别的排列 状压

    暴力枚举的话是n! 考虑状压DP,其实就是用二进制表示状态 再进行暴力 同时加一个记忆化就好了 这里有常用技巧: 全集(1n)-1 增加某个元素 x  |  (1i) 删除某个元素 x ~(1i)

    2024年02月08日
    浏览(31)
  • LeetCode46全排列(回溯入门)

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 难度:中等 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案 示例 1 示例 2 示例 3 在很多刷题文章和书籍中,此题都被用做回溯算法的第一题,可见该题

    2024年02月10日
    浏览(36)
  • LeetCode.46. 全排列(回溯法入门)

    写在前面: 题目链接:LeetCode.46. 全排列 编程语言:C++ 题目难度:中等 给定一个不含重复数字的数组 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] 输出:

    2024年02月06日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包