leetcode
文章平均质量分 60
陇院第一Sweet Baby
热爱学习,计算机科学相关知识的帅哥一枚。
展开
-
【无标题】
假设数组长度是n,每次只能从数组中取出一个元素,我们可以把它看作是一颗n叉树的dfs遍历,使用递归,当往下走的时候选择当前元素,往回走的时候撤销选择,可以看下动画演示。给定一个不含重复数字的数组 nums ,返回其所有可能的全排列。你可以 按任意顺序 返回答案。来看下今天的算法题,这题是LeetCode的第46题:全排列。这是一道经典的回溯算法问题,之前在讲。的时候,也提到过使用回溯算法来解决。来源:LeetCode第46题。nums 中的所有整数互不相同。原创 2024-04-21 21:28:10 · 184 阅读 · 0 评论 -
【无标题】
怎么样才能过滤掉重复的数字呢,一种方式就是找出所有的组合结果,然后在这个结果中过滤掉重复的组合。除了上面说的一种解法还有一种方式就是我们常说的剪枝,因为要过滤掉重复的,只有重复的数字才会造成重复的结果。这两种剪枝方式都是可以的,一种是把整个大枝剪掉,一种是在每个大枝下面不停的剪小枝。差不多,不过这题有重复数字,前面讲的题没有重复数字。有重复的数字肯定就会有重复的组合,所以这题需要过滤掉重复的组合。来看下今天的算法题,这题是LeetCode的第47题:全排列 II,也是米哈游的一道面试题。原创 2024-04-21 21:25:07 · 449 阅读 · 3 评论 -
LeetCode [第491题]
为什么相同层级不能选择重复的数字,很好理解,因为每个数字都有选和不选两种状态,如果有相同的数字,当前面一个数字不选择的时候,这个结果和后面一个数字选择时候,他们的结果是一样的,出现了重复,我们只需要把后面这个剪掉即可,如下图所示。我们可以使用回溯算法,并且在同一层级,相同的数字只能选择一次,所以我们可以使用set集合来记录每层的节点,剪掉重复的分支。他们都是有重复的元素,但前面一题为了过滤掉重复的结果,需要先对数组进行排序,而这题是求子序列,所以不能排序。来源:LeetCode第491题。原创 2024-04-21 21:17:32 · 390 阅读 · 0 评论