首页 > 编程语言 > 详细

算法之力扣习题练习

时间:2021-04-08 15:08:50      阅读:10      评论:0      收藏:0      [点我收藏+]

题目描述:

给定一个 没有重复 数字的序列,返回其所有可能的全排列。

示例:

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

 

思路:

回溯算法,遇到合适的放入数组,遇到不合适的就继续

result = []
def backtrack(路径, 选择列表):
    if 满足结束条件:
        result.add(路径)
        return
    
    for 选择 in 选择列表:
        做选择
        backtrack(路径, 选择列表)
        撤销选择  

部分代码:

javascript:
var permute = function(nums) {
    var res = []
    var backtrack = function(nums,track){
        if(nums.length === track.length){     //递归终止条件,如果track数组长度和比较数组nums长度一致则表示找到结果之一,递归结束,输出数组
            res.push(track.slice())
            return
        }
        for(var i=0;i<nums.length;i++){
            if(track.indexOf(nums[i])>-1){  //若是track数组中存在与nums[i]一样的数则结束该次循环
                continue
            }
            track.push(nums[i])  //在nums中找到track没有的数时压入track数组中
            backtrack(nums,track)  //递归调用
            track.pop()
        }
    
    }
     backtrack(nums,[])
     return res
};
 

算法之力扣习题练习

原文:https://www.cnblogs.com/iknyea/p/backtrack.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!