• 46. 全排列(中等)


    题目链接

    题目描述:

    给定一个不含重复数字的数组 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 中的所有整数 互不相同

    思路:

    深搜dfs+回溯

     1 /* JavaScript */
     2 /**
     3  * @param {number[]} nums
     4  * @return {number[][]}
     5  */
     6 var swap = function(arr, i, j) {
     7     const temp = arr[i]
     8     arr[i] = arr[j]
     9     arr[j] = temp
    10 }
    11 
    12 var dfs = function(res, arr, begin) {
    13     if(begin === arr.length-1) {
    14         res.push([...arr]) //通过扩展运算符...对数组进行解构(深复制)
    15         return
    16     }
    17     for(let i=begin; i<arr.length; i++) {
    18         swap(arr, begin, i)
    19         dfs(res, arr, begin+1)
    20         swap(arr, begin, i) //回溯
    21     }
    22 }
    23 
    24 var permute = function(nums) {
    25     const res = []
    26     dfs(res, nums, 0)
    27     return res
    28 };
  • 相关阅读:
    LeetCode-434-字符串中的单词数
    LeetCode-415-字符串相加
    字符串
    序列
    元组
    列表
    repr()与str的区别
    输出函数print()
    输入函数input()
    MySQL中快速复制数据表方法汇总
  • 原文地址:https://www.cnblogs.com/wwqzbl/p/15427011.html
Copyright © 2020-2023  润新知