首页 > 编程语言 >day29 回溯算法part5 代码随想录算法训练营 46. 全排列

day29 回溯算法part5 代码随想录算法训练营 46. 全排列

时间:2024-02-19 14:37:06浏览次数:36  
标签:used day29 nums 46 res 随想录 len 算法 path

题目:46. 全排列

我的感悟:

  • 看不下去视频,可以先看文字讲解。看答案。带着疑问去看视频,效果会更好。
  • 加油!

理解难点:

  • 排列,不用start_index了
  • 借助used = 1来过滤掉[1,1,1]这种情况。
  • 如果不加if used[i] == 1,continue 就会出现重复的。如下图:
  •  

代码示例:

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        res = []
        used = [0] * len(nums)
        self.backtracking(nums,[],res,used)
        return res
        
    def backtracking(self,nums,path,res,used):
        # 终止条件
        if len(path) == len(nums):
            res.append(path[:])
            return

        for i in range(len(nums)):
            if used[i] == 1:    # 说明已经使用过了
                continue
            path.append(nums[i])
            used[i] = 1
            self.backtracking(nums,path,res,used)
            used[i] = 0
            path.pop()

通过截图:

扩展写法:

资料:

46.全排列 

本题重点感受一下,排列问题 与 组合问题,组合总和,子集问题的区别。 为什么排列问题不用 startIndex 

https://programmercarl.com/0046.%E5%85%A8%E6%8E%92%E5%88%97.html

视频讲解:https://www.bilibili.com/video/BV19v4y1S79W

标签:used,day29,nums,46,res,随想录,len,算法,path
From: https://www.cnblogs.com/liqi175/p/18021015

相关文章

  • RTS游戏核心技术 流场寻路算法详解
       流场寻路技术是实时战略游戏(RTS)中常用的路径规划算法,通过模拟流体在地图上的流动来为单位寻找最优路径。这种技术能够有效处理大规模地图、大量单位和动态环境变化的路径规划问题,提高游戏的实时性和可玩性。下面详细介绍RTS游戏中流场寻路技术的实现步骤和关键技术点......
  • 前端知识回顾概览--数据结构与算法
    1.算法-数据结构篇实现一个LRU缓存求环状链表树的前序、中序、后序遍历树的层序遍历获取树的层级实现类数组转数组实现DOM转JSON实现JSON转DOM实现树转数组实现数组转树实现对象打平2.算法-排序与双指针等n平方复杂度的排序有哪些?如何实现冒泡排序,如何进......
  • day29 回溯算法part5 代码随想录算法训练营 491. 非递减子序列
    题目:491.非递减子序列我的感悟:难不怕,不行就抄一遍,再默写一遍,多记忆几遍。加油!!!理解难点:uset是本层的, res收获的是节点(满足要求的节点),不用return(用了return是仅仅收集叶子节点的)判断的逻辑,是nums[i]当前的节点和目标的path的区别代码示例:classSolution:......
  • 第十六节:各种排序算法总结和性能测试
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • 复习回顾-回溯算法-90. 子集 II 【犹豫】
    注意点&感悟:对过滤条件放在for里面,还是外面,有些犹豫了。【疑问,先搁置】我感觉for里面,应该是进去树枝的过程,for外面写,应该是终止条件。================又看了一眼视频,for里面是取数的过程,所以,应该取数的过程,进行了剪枝。题目链接:90.子集II自己独立写的代码:classSo......
  • 回顾复习-回溯算法-78. 子集
    注意点&感悟:复习是个好东西题目链接:78.子集自己独立写的代码:classSolution:defsubsets(self,nums:List[int])->List[List[int]]:res=[]self.backtracking(nums,0,[],res)returnresdefbacktracking(self,nums,start_index,......
  • m基于码率兼容打孔LDPC码oms最小和译码算法的LDPC编译码matlab误码率仿真
    1.算法仿真效果matlab2022a仿真结果如下: 2.算法涉及理论知识概要       码率兼容打孔LDPC码BP译码算法是一种改进的LDPC译码算法,能够在不同码率下实现更好的译码性能。该算法通过在LDPC码中引入打孔操作,使得码率可以灵活地调整,同时利用BP(BeliefPropagation)译码算法......
  • 基于稀疏表示的小波变换多光谱图像融合算法matlab仿真
    1.算法运行效果图预览小波变换融合   PCA融合   基于稀疏表示的小波变换多光谱图像融合算法   性能指标对比   2.算法运行软件版本matlab2022a 3.算法理论概述       随着遥感技术的飞速发展,多光谱图像融合在地球观测、环境监测、......
  • 基于深度学习的性别识别算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a  3.算法理论概述        随着深度学习的飞速发展,其在计算机视觉领域的应用越来越广泛。性别识别作为计算机视觉的一个重要分支,对于人脸分析、社交网络和机器人交互等领域有着重要意义。性别识别是......
  • 数据结构与算法---------4
    树树是一种一对多的结构,它在一些有层次结构的系统中使用非常多,例如政府系统中,它们的关系就可以用树来表示。 当树中没有节点时,称为空树。树中有一个称为"根"特殊节点。其中每一颗子树不相交也就是没有环。除了根节点之外的所有节点有且只有一个父节点。一颗树有N个节点,那么......