1 题目描述

2 解题思路 :回溯

  • 如果解决一个问题有多个步骤,每一个步骤有多种方法,题目又要我们找出所有的方法,可以使用回溯算法;
  • 回溯算法是在一棵树上的 深度优先遍历(因为要找所有的解,所以需要遍历);
  • 组合问题,相对于排列问题而言,不计较一个组合内元素的顺序性(即 [1, 2, 3] 与 [1, 3, 2] 认为是同一个组合),因此很多时候需要按某种顺序展开搜索,这样才能做到不重不漏。
class Solution:def permute(self, nums: List[int]) -> List[List[int]]:ret=[]def dfs(lst,tmp):if(len(tmp)==1):ret.append(lst+tmp)returnfor i in tmp:tmp1=tmp.copy()tmp1.remove(i)lst1=lst.copy()dfs(lst+[i],tmp1)dfs([],nums)return(ret)

这里dfs(lst,tmp)的意思是,nums-tmp的部分已经排列成了lst,我们接下来需要排列tmp中的元素,来构造一种nums中元素的排列方法

我们在tmp中随机选择一个元素,他就是我们lst中的下一个元素。

当tmp只有一个元素的时候,毫无疑问它只有一种排列方法了,此时一种全排列结果就出来了,放入ret数组中。

文巾解题 46. 全排列相关推荐

  1. 文巾解题 面试题 01.04. 回文排列

    1 题目描述 2 解题思路 2.1 哈希表 创建一个哈希表,记录每个元素出现的次数.如果出现次数为奇数的元素只有一个或者没有,那么就是一个回文排列 class Solution:def canPerm ...

  2. 文巾解题 15. 三数之和

    1 题目描述 2 解题思路 2.1 使用两数之和函数 这种做法目前超时了,如果大家有想到合适的减时间/剪枝的方法,欢迎私信or评论~ 两数之和的方法见文巾解题 1. 两数之和_刘文巾的博客-CSDN博 ...

  3. 文巾解题 342. 4的幂

    1 题目描述 2 解题思路 2.1 方法1 判断log函数的结果是不是整数 class Solution:def isPowerOfFour(self, n: int) -> bool:if(n ...

  4. 文巾解题 477. 汉明距离总和

    1 题目描述 2 解题思路 2.1 暴力两两比较 两个数字之间的汉明距离可以使用 文巾解题 461. 汉明距离_刘文巾的博客-CSDN博客 中的任何一种方法,但是因为这个是两两比较,时间复杂度比较高, ...

  5. 文巾解题 1035. 不相交的线

    1 题目描述 2 解题思路 k条互不相交的直线分别连接了数组 nums1和nums2的 k 对相等的元素,而且这 k 对相等的元素在两个数组中的相对顺序是一致的,因此,这 k 对相等的元素组成的序列即 ...

  6. 文巾解题 278. 第一个错误的版本

    1 题目描述 2 解题思路 二分查找见:二分查找详解_刘文巾的博客-CSDN博客 class Solution(object):def firstBadVersion(self, n):left=1r ...

  7. 文巾解题 704. 二分查找

    1 题目描述 2 解题思路 二分查找见: 二分查找详解_刘文巾的博客-CSDN博客 class Solution(object):def search(self, nums, target):left ...

  8. 文巾解题 627. 变更性别

    1 题目描述 2 解题思路 回顾一下 UPDATE语句 2.1 CASE语句 回顾一下CASE语句(见数据库笔记: SQL_刘文巾的博客-CSDN博客 第六节) UPDATE salary SET s ...

  9. 文巾解题 面试题 17.10. 主要元素

    1 题目描述 2 解题思路 因为是O(N)的时间复杂度和O(1)的空间复杂度,所以想到的是Boyer-Moore 投票算法.这个算法的原理可见:算法整理:Boyer-Moore 投票算法_刘文巾的博客 ...

最新文章

  1. CFile类打开文件的有趣现象
  2. 《基于Node.js实现简易聊天室系列之项目前期工作》
  3. Java 洛谷 P1308 统计单词数
  4. C#中三种截屏方式总结
  5. Java8 中用法优雅的 Stream,性能也优雅吗?
  6. apache spark_Apache Spark软件包,从XML到JSON
  7. Linux学习之路01
  8. 声智科技完成B轮2亿元融资,AI方案遍布百度小米华为阿里产品
  9. linux oracle 12170,ora-12170 linux
  10. 初中计算机第一课怎么讲,初中信息技术第一课 图像及其简单处理教学设计
  11. 【语音播报】基于matlab语音播报【含Matlab源码 507期】
  12. 对于文件编码格式的浅显理解
  13. python还可以这么玩?用Python把视频转换为字符动画(含音频、高清、彩图)【附源码】
  14. postman电脑版无法安装_Postman系列一:Postman安装及使用过程中遇到的问题
  15. 科学计算机怎么计算电工学向量,电工学常用单位计算与换算公式大全
  16. 制作游戏3D模型都有哪些步骤流程
  17. 北京周边骑行路线总结
  18. l310加完墨水后需要怎样设置_epson打印机没有墨水加了墨水后还是打印不了怎么解决...
  19. APP - 重磅消息!微信测试无需新手机号注册新微信号功能
  20. 谈谈“五级工程师和职业发展”的思考

热门文章

  1. Java中伪造referer来获取数据
  2. exception ----- Functions
  3. dell 远程访问管理卡iDRAC 7
  4. Cisco easy *** basic ASA
  5. web前端——让人头疼的多列复选框排列解决办法
  6. 大量视频教程下载,全部是微软最新技术
  7. Android学习记录:SQLite数据库、res中raw的文件调用
  8. 内存的静态分配和动态分配的区别【转】 静态分配内存与动态分配内存的区别
  9. 计算机网络系统集成策略实现摘要,计算机网络集成策略实现探析
  10. 树莓派4视频输出接口_树莓派第四代来啦!4G内存、支持双屏4K输出和H265硬解