
递归循环
文章平均质量分 64
递归循环类的高频面试算法
Java大数据运动猿
努力提升自己,记录学习过程。巩固自己,帮助他人!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
递归思路讲解
最近刷到了树这一模块的算法题,树相关的算法题几乎都是用递归来实现的,但递归的思路却有点抽象,每次遇到递归,都是通过递归来深度或广度地遍历树,但对于递归遍历树的遍历路线,却有点抽象难懂,不知道遍历的路线是怎么样的,也对于返回的路线有点懵懂。 虽然知道是用递归,也知道递归可以一层一层从上到下地遍历,大体上的一个遍历路线是明白的,但是真要将递归一层层拆解分析的话,我还是有点不知所措的,所以今天研究了一小时,彻底将递归的一层层遍历拆解分析透彻了。 记录一下拆解分析的过程,以防之后又忘了,方便回顾。原创 2023-05-02 14:26:27 · 880 阅读 · 0 评论 -
215. 数组中的第K个最大元素【382】
此题基于快速排序进行改编,来求解目标元素。 快速排序的原理是找一个基准值,然后把小于基准值的所有元素放在左边,大于基准值的所有元素放在右边,然后再用递归的方式分别对左右两边的元素进行快速排序。 在此题中,因为找的是第k个最大的元素,所以目标值的索引位置为array.length-k,所以每排一次序之后,判断基准值的索引位置是否小于目标值的索引位置,小于的话则对右边的元素进行排序,否则对左边的元素进行排序,依次类推,当基准值的索引位置等于目标值的索引位置时,将其位置对应的值返回即可。 这样的原创 2023-03-14 13:46:56 · 261 阅读 · 0 评论 -
70. 爬楼梯【106】
此题和《剑指 Offer 10- I. 斐波那契数列》以及《剑指 Offer 10- II. 青蛙跳台阶问题》是一类题,都是利用 f(x) = f(x-1) + f(x-2) 这个函数来求解,只是每题的n的取值范围不一样,稍微有点变化,但核心点都是利用循环来实现f(x) = f(x-1) + f(x-2) 这个函数。 r相当于f(x),q相当于f(x-1),p相当于f(x-2)原创 2023-01-06 17:02:54 · 292 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列【33】
改进循环算法: 斐波那契数列:0,1,1,2,3,5,8........ 总结起来就是:第一项是0,第二项是1,后续第n项为第n-1项和第n-2项之和。 也就是0开始,往后计算,从下层往上层递增,算到哪就把值保存,然后直接进入下一环节的计算,而不是重新计算。原创 2022-10-19 13:49:51 · 270 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题【35】
在一般情况下,可以把n级台阶的跳法看成n的函数,记为f(n),那么一般情况下,一开始我们有两种不同的选择:(1)第一步只跳一级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即f(n-1);(2)第一步跳两级,那么跳法数目等于后面剩下的n-2级台阶的跳法数目,即f(n-2)。所以f(n)=f(n-1)+f(n-2)。原创 2022-10-19 14:34:00 · 262 阅读 · 0 评论 -
变态跳台阶【35】
当只有一级台阶时,f(1)=1;当有两级台阶时,f(2)=f(2-1)+f(2-2);一般情况下,当有n级台阶时,f(n)=f(n-1)+f(n-2)+···+f(n-n)=f(0)+f(1)+···+f(n-1),同理,f(n-1)=f(0)+f(1)+···+f(n-2). 因此,根据上述规律可以得到:f(n)=2*f(n-1)。这时一个递推公式,同样为了效率问题,用循环可以实现。原创 2022-10-19 15:43:00 · 138 阅读 · 0 评论 -
剑指 Offer 14- I. 剪绳子【8】
数论 任何大于1的数都可由2和3相加组成(根据奇偶证明) 因为2*2=1*4,2*3>1*5, 所以将数字拆成2和3,能得到的积最大 因为2*2*2原创 2022-10-22 09:25:36 · 341 阅读 · 0 评论 -
剑指 Offer 47. 礼物的最大价值【2】
在元二维数组的空间上,进行替换,从左上角开始向下向左,dp[i][j] = girl[i][j] + 前一个元素,然后取最大值(从左向右加当前元素的最大还是从上到下加当前元素的大)原创 2022-10-22 10:41:12 · 171 阅读 · 0 评论 -
剑指 Offer 12. 矩阵中的路径【8】
1.先在矩阵中逐个元素遍历找出要查找字符串的第一个字符的元素的位置 2.从那个元素位置开始进行上左下右的匹配 (1)如果匹配成功就进入字符串的下一个字符的匹配,同时标记此元素为#,防止再次匹配到这个元素 (2)如果匹配不成功,则退回上一个匹配成功的位置重新进行查找,也就是换一条路径。 3.重复上述步骤2的操作,用递归的方式,直到找到最后一个字符串元素,返回true,否则返回false。原创 2022-10-23 09:58:37 · 319 阅读 · 0 评论