![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
【递归算法】
文章平均质量分 65
递归算法
Ring*
本科学硬件,研究生学软件!
展开
-
【LeetCode-344】反转字符串
代码】【LeetCode-344】反转字符串。原创 2022-07-21 21:41:22 · 161 阅读 · 0 评论 -
【LeetCode-326】3 的幂
本题中的n可以为负数或0,可以直接提前判断该情况并返回False,也可以进行试除,因为负数或0也无法通过多次除以3得到1。在题目给定的32位有符号整数的范围内,最大的3的幂为3^{19}=1162261467。给定一个整数,写一个函数来判断它是否是3的幂次方。否则,返回false。如果此过程中n无法被3整除,就说明n不是3的幂。整数n是3的幂次方需满足存在整数x使得n==与方法一不同的是,这里需要特殊判断n是负数或0的情况。...原创 2022-07-21 21:39:46 · 80 阅读 · 0 评论 -
【LeetCode-50】Pow(x, n)
本题的方法被称为「快速幂算法」,有递归和迭代两个版本。这篇题解会从递归版本的开始讲起,再逐步引出迭代的版本。当指数nn为负数时,我们可以计算。原创 2022-07-21 21:38:38 · 156 阅读 · 0 评论 -
【LeetCode-509】斐波那契数
根据状态转移方程和边界条件,可以得到时间复杂度和空间复杂度都是O(n)的实现。由于F(n)只和F(n−1)与F(n−2)有关,因此可以使用「滚动数组思想」把空间复杂度优化成O(1)。动态规划的状态转移方程即为上述递推关系,边界条件为F(0)和F(1)。斐波那契数的边界条件是F(0)=0和F(1)=1。因此只要我们能快速计算矩阵M的n次幂,就可以得到F(n)的值。方法一的时间复杂度是O(n)。,时间复杂度是O(n),可以定义矩阵乘法,然后用快速幂算法来加速这里。...原创 2022-07-21 21:36:02 · 62 阅读 · 0 评论 -
【LeetCode-231】2的幂
因此我们可以考虑使用位运算,将n的二进制表示中最低位的那个1提取出来,再判断剩余的数值是否为0即可。进行按位与运算,高位全部变为0,最低位的1以及之后的所有0不变,这样我们就获取了n二进制表示的最低位的1。假设n的二进制表示为$(a10\cdots0)_2$,其中a表示若干个高位,1表示最低位的那个1,一个数n是2的幂,当且仅当n是正整数,并且n的二进制表示中仅包含1个1。,其中a表示若干个高位,1表示最低位的那个1,...原创 2022-07-17 22:26:53 · 249 阅读 · 0 评论