
递归与递推
青衫客36
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Acwing-787. 归并排序
归并排序模板,直接背。原创 2023-03-22 16:25:41 · 148 阅读 · 0 评论 -
Acwing-785. 快速排序
【代码】Acwing-785. 快速排序。原创 2023-03-22 15:55:41 · 134 阅读 · 0 评论 -
leetcode-4. 寻找两个正序数组的中位数
(2)考虑特殊情况,如果nums1[i : nums1.size() - 1]区间中的元素小于k / 2个了,假设此时nums1中的元素个数为n1,那么我们就将这个区间的n1个元素全部取出来,在nums2中仍然取k / 2个元素,因为k = (len(nums1) + len(nums2)) / 2,所以,len(nums1) 和 len(nums2) 不可能同时小于k / 2。时间复杂度:k = (m + n) / 2,每次递归k的规模都减小一半,因此,总的时间复杂度为O(log(m + n))原创 2023-03-22 15:14:12 · 139 阅读 · 0 评论 -
leetcode-53. 最大子数组和
发现这一类的区间都是包含nums[i]的,所以我们要想在里面找最大值的话,就要让前面那一部分最大,前面这一部分其实就是所有以nums[i - 1]为结尾的区间,最大值为f[i - 1],所以第一类区间的最大值为f[i - 1] + nums[i]f[i]为这两类各自的最大值再取max。定义f[i]是所有以nums[i]为结尾的区间中的最大和,由这个定义出发,我们看看f[i]与f[i-1]有什么递推关系。综上,f[i] = max{nums[i], f[i - 1] + nums[i]}原创 2023-03-21 19:27:42 · 357 阅读 · 0 评论 -
求数组中的最大值(递归版)
【代码】求数组中的最大值(递归版)原创 2023-03-15 22:49:47 · 237 阅读 · 0 评论 -
插入排序(递归版)
【代码】插入排序(递归版)原创 2023-03-15 22:36:48 · 207 阅读 · 0 评论 -
leetcode-46. 全排列
【代码】leetcode-46. 全排列。原创 2022-11-17 11:12:03 · 188 阅读 · 0 评论 -
Acwing-51. 数字排列
3、对于相同数,我们人为定序,就可以避免重复计算:我们在dfs时记录一个额外的状态,记录上一个相同数存放的位置 start,我们在枚举当前数时,只枚举 start+1,start+2,…,nstart+1,start+2,…由于有重复元素的存在,这道题的枚举顺序和 Permutations 不同。1、先将所有数从小到大排序,这样相同的数会排在一起;2、从左到右依次枚举每个数,每次将它放在一个空位上;4、不要忘记递归前和回溯时,对状态进行更新。转载 2022-11-16 18:45:18 · 203 阅读 · 0 评论 -
LeetCode-字母大小写全排列
类似于二叉树的前序遍历,左分支代表不转换字母的大小写,右分支代表转换字母的大小写,如果遇到数字就跳过,继续遍历下一个位置,循环的终止条件是扫描到最后一个元素的下一个位置。(如果扫描到最后一个元素就停止的话,那么最后一个元素可能还没有进行大小写转换,所以我们要扫描到最后一个元素的下一个位置,以确保字符串中所有的字母都大小写转换过)原创 2022-10-31 16:10:18 · 149 阅读 · 0 评论 -
Acwing 116. 飞行员兄弟
① 枚举所有开关的状态(0~2^16 - 1)(16位二进制数,若某一位为1表示按一下,为0表示不按)② 按照该方案,对所有灯泡进行操作(所在行,所在列全部按一下)③ 判断灯泡是否全亮,如果全亮的话,记录方案。原创 2022-10-04 16:59:00 · 336 阅读 · 0 评论 -
Acwing 1208. 翻硬币
本题字符串长度最多是100,因此我们每一步有99种选择(每次选择相邻两个),最坏翻转的步数起码需要50步(初始全部反面,目标全部正面)因此时间复杂度为99的50次方,所以宽搜会TLE。从前往后遍历初始字符串和目标字符串,若当前位置的两个字符不同,则 翻转相邻的两个硬币(可以理解为按一次开关),若当前位置的两个字符相同,不做处理,继续向后遍历。每一次看一下当前灯泡和最终状态是不是一样的,如果不一样就把当前灯泡和相邻灯泡变一下,最后统计一下一共变了多少次。原创 2022-10-04 16:50:35 · 242 阅读 · 0 评论 -
Acwing 1209. 带分数
暴力枚举1~9的全排列,然后插入两个挡板(i, j)使得分成三个部分,再将每个部分转换成对应的十进制数,最后判断这三个数能否达到题目要求的等式,若满足条件,方案数+1。原创 2022-10-04 10:28:42 · 164 阅读 · 0 评论 -
Acwing 93. 递归实现组合型枚举
u + n - start < m 为剪枝操作,当前已选择的数 + 剩下的数 凑不出指定的个数m,直接return。原创 2022-10-02 20:26:50 · 180 阅读 · 0 评论 -
Acwing 95. 费解的开关
【代码】Acwing 95. 费解的开关。转载 2022-10-02 12:59:40 · 378 阅读 · 0 评论 -
Acwing 717. 简单斐波那契
【代码】Acwing 717. 简单斐波那契。原创 2022-10-02 12:57:05 · 153 阅读 · 0 评论 -
Acwing 94. 递归实现排列型枚举
【代码】Acwing 94. 递归实现排列型枚举。原创 2022-10-02 12:55:54 · 141 阅读 · 0 评论 -
Acwing 92. 递归实现指数型枚举
递归终止条件,当前u的位置到达末尾的下一个位置,此时递归树的某一个分支已经走到底,可以输出本次对每个位置的选择情况。在回溯的时候记得恢复现场哟~使用st数组来标记当前位置u的状态(0表示还未做出选择,1表示选择当前位置,2表示不选当前位置)本题难点(对于自己而言hh~)在于递归终止条件的写法。原创 2022-10-02 10:31:19 · 102 阅读 · 0 评论