归档
时光荏苒,文字留痕
共 16 篇文章
leetcode动态规划基础练习题
509. 斐波那契数 这个题目根据题意,暴力解法就是一个简单的递归,求$fib(n)$的值,我们求$fib(n-1)+fib(n-2)$就可以了。当n是0,1,2的时候就是fib函数的一个基础状态。终止递归的条件。但是这个效率很低,时间复杂度是$O(2^n)$。 class Solution:
leetcode二叉树基础练习题
104. 二叉树的最大深度 这个题我们用两种思路考虑,第一种是分解的思路,求root的最大深度,那不就是左子树和右子树的最大深度加1就行了,对于左子树来说,它的最大深度又是它的左右子树的最大深度加1,对于每个节点,考虑的问题是一样的。对于代码,如果一个节点为None,深度也就是0,这是递归的终止条件
leetcode滑动窗口练习题
滑动窗口是一种很高效的寻找特定情况字串的一种算法。一个题求某种符合条件的字串,穷举的话就只能是固定起点和终点。然后获取到所有的字串,判断是否符合条件,时间复杂度是$O(n^2)$.而滑动窗口看似是两个嵌套的循环,但是对于字符串的每个字符来说,都只被遍历了一遍,所以时间复杂度是$O(n)$ 滑动窗口的
leetcode数组双指针练习题
26. 删除有序数组中的重复项 如果不是原地修改,我们完全可以new一个新数组,然后从头到尾遍历一遍,把不重复的元素添加到新数组里面。但是这个题要求原地修改,也就是只能在原数组上面进行一些操作。使用快慢双指针。让快指针在前面走。遇到相同的就跳过继续往后走,遇到不同的,就让s
leetcode链表双指针练习题
21. 合并两个有序链表 将两个升序链表合并成新的升序链表,只需要创建一个新的链表,把两个指针分别放到链表A和链表B的头部,然后不停的
leetcode-1979. 找出数组的最大公约数
题目链接:1979. 找出数组的最大公约数 这个题还是非常简单的,返回数组最大数和最小数的最大公约数,我们要找最大数和最小数,直接排个序不就行了. Python代码如下: import math class Solution: def findGCD(self, nums: List[int
洛谷-P1029 [NOIP 2001 普及组] 最大公约数和最小公倍数问题
题目链接:P1029 [NOIP 2001 普及组] 最大公约数和最小公倍数问题 这个题可以先读题,先输入x0和y0,然后需要求P,Q,这两个数的最大公约数是x0,最大公倍数是y0.求有多少个这样的P,Q 我们简单的想到穷举.因为x0是两个数字的公约数,那这个数一定能被x0整除,所以我们从x0穷举,
洛谷-B3634 最大公约数和最小公倍数
题目链接:B3634 最大公约数和最小公倍数 求最大公约数需要用辗转相除法.例如找24和16的最大公约数 16%24=0......16 24%16=1......8 16%8=2......0 8%0=? 就是拿一个数当除数,一个数当被除数,谁在前都无所谓,如果前面的小,第二轮也会替换位置的,然后
洛谷-P10424 [蓝桥杯 2024 省 B] 好数
题目链接:P10424 [蓝桥杯 2024 省 B] 好数 这个题求1-N之间的好数,也就是一个数字从低位到高位,奇数位是奇数,偶数位是偶数,就是一个好数. 直接for循环从1遍历到n.然后分别判断每个数是不是好数即可. cpp代码如下: #include<iostream> using names
洛谷-P8716 [蓝桥杯 2020 省 AB2] 回文日期
题目链接:P8716 [蓝桥杯 2020 省 AB2] 回文日期 这个题我一开始的想法是直接从输入的数字遍历到99999999,然后判断每一个数是不是回文数.但是很明显超时了.虽然是O(n)复杂度,但是几千万次循环也是很多的. 然后我们可以想,对于一个确定的年份,比如2012,那它对应的回文日期肯定