- 博客(309)
- 收藏
- 关注
原创 HJ103 Redraiment的走法
dp方程初始化:如果不能调到任何的桩,那么只能在起点,所以初始化 dp[1-n] = 1。由此可得dp方程,dp[i] = max(dp[i], dp[j]+1)。求取最长递增子序列。
2023-12-10 17:18:25
263
原创 HJ91 走方格的方案数
用dp[i][j]表示达到坐标(i,j)的方案数,那么dp[i][j]=dp[i-1][j]+dp[i][j-1],我们需要对dp方程进行初始化,很明显在左边界只能往下走,即dp[1-i][0]=1,在上边界只有往右走,即dp[0][1-i]=1,最终返回dp[n][m]时间复杂度:O(n+m)
2023-11-27 14:44:30
185
原创 LeetCode 5. 最长回文子串
中心扩散法,枚举中心,利用双指针从中间向两边扩散,遇到s[left]!= s[right]结束。1. 奇数类型回文串需要从i-1, j+1 向两边扩散,例如:bbbabbb。2.偶数类型回文串需要从i,i+1向两边扩散,例如:bbaabb。时间复杂度:O(n^2)
2023-11-11 11:49:21
129
原创 HJ77 火车进站
1.如果还有火车还有未进站,可以选择进站或者不进站。2.如果车站还有车未出站,可以选择出站或者不出站。进站火车压入栈中,出站时出栈。时间复杂度:O(n!
2023-11-05 17:53:31
193
原创 HJ73 计算日期到天数转换
模拟,将每个月的天数相加,需要注意闰年的2月多非闰年多一天。闰年:能被4整除但是不能被100整数,或者能被400整除。时间复杂度:O(n)
2023-11-05 17:42:26
153
原创 LeetCode 44. 通配符匹配
当pj是*号时,可以选择使用*替换字符,那么dp[i][j]就从dp[i-1][j]转换而来,如果不选择使用*,那么dp[i][j]就从dp[i][j-1]转换而来。设dp[i][j]表示字符串s的前i个字符和模式p的前j个字符是否匹配。时间复杂度:O(m*n)
2023-10-29 17:44:41
164
原创 LeetCode 69. x 的平方根
注意:mid * mid 可能会超出 int 上限,需要转化为 long。<= x,采用二分法求出(1, x) 之间a最大值。时间复杂度:O(logn)
2023-09-24 17:37:24
159
原创 HJ70 矩阵乘法计算量估算
3.计算时从矩阵栈中弹出两个矩阵,计算并记录计算次数,再将计算后的结果矩阵压入矩阵栈中。2.遍历计算表达式,遇到A-Z压入矩阵栈,遇到 ( 压入操作符栈,遇到 ) 进行计算。1.开两个栈,矩阵栈用于保存矩阵信息,操作符栈用于保存括号。时间复杂度:O(n)
2023-09-23 17:53:39
237
原创 HJ60 查找组成一个偶数最接近的两个素数
1.差要最小,两数相隔距离就要最短,可以从n/2开始向两边扩散枚举。,如果有数字能被n整除就不是素数。次,时间复杂度:O(n*2.判断素数,枚举1-外层循环n次,内层循环。1.穷举两数和等于n。3.求差最小的两素数。
2023-09-17 18:32:01
176
原创 HJ62 查找输入整数二进制中1的个数
1.与1做与运算,只有末位为1的数与1做与运算结果才为1。2.每计算一次,数字右移一位,直到为0。1.求10进制数的二进制串。时间复杂度:O(n)时间复杂度:O(n)
2023-09-17 18:15:07
180
原创 HJ63 DNA序列
滑动窗口求子串复杂度为O(n),求窗口内的GC比例复杂度为O(m),所以整体时间复杂度:O(n*m)。1.在上面代码中,每次窗口都要求一次GC比例,但是窗口内只有首尾元素发生变化,无需每次都遍历。2.求GC比例可以换成求GC字符数量,因为总量不变,GC数量越大,比例越高。1.采用滑动窗口求出长度为n的所有子序列。2.计算每个子序列的GC比例。3.保存最大的GC比例。时间复杂度:O(n)。
2023-09-17 18:05:34
146
原创 HJ59 找出字符串中第一个只出现一次的字符
1.遍历所有字符,并利用map记录出现的次数。2.再次遍历字符,找到出现次数为1的字符。时间复杂度:O(n)
2023-09-10 17:35:49
161
原创 HJ58 输入n个整数,输出其中最小的k个
维护一个长度为k的最大堆,每次将最大值弹出,遍历所有数字,最后堆里的数字就是最小的k个数字。按照从小到大排序,取前K个数字。时间复杂度:O(n*logn)时间复杂度:O(logn)
2023-09-10 17:33:32
170
原创 HJ57 高精度整数加法
按照传统加减法模式,从最后一位开始,逐位相加,逢十进一,传统方式从右往左相加,可以将数字翻转,变成从左往右按照数组遍历顺序相加,最后再将结果翻转。时间复杂度:O(n+m)
2023-09-10 17:29:01
583
原创 HJ56 完全数计算
如果能整除即为约数(约数至少两位,i*i = n,所以i的最大值为。1.求出每个数的所有约数,判断是否为完全数。时间复杂度:O(N)
2023-09-10 17:23:02
153
原创 HJ55 挑7
1.判断是否为7的倍数:对7求余,余数为0表示为7的倍数。2.判断是否包含7:依次判断每一位数字是否存在7。符合1或2的即为答案,穷举所有数字,寻找结果。时间复杂度:O(N)
2023-09-10 17:16:59
171
原创 HJ53 杨辉三角的变形
所以不能构建整个杨辉三角,肯定有其他规律可言,发现从第三行开始偶数位置的分布成{2,3,2,4}的规律。根据题目要求,n 最大取到。时间复杂度:O(N)
2023-09-03 11:42:30
240
原创 HJ52 计算字符串的编辑距离
如果s1[i] == s2[j] 证明当前位置的字符相等,无需操作,即dp[i][j] = dp[i-1][j-1];3.修改:s1(1 - i-2) 编辑为 s2(1 - i-) 再将s1[i-1] 修改为 s2[i-1)dp[i][0] 表示s1(1-i)编辑为空,那么需要删除s1的所有字符,即dp[i][0]=i;1.删除:s1(1 - i-2) 编辑为 s2(1 - j-1) 在删除s1[i-1];2.插入:s1(1 - i-1) 编辑为 s2(1 - i-2) 再插入s2[j-1];
2023-08-06 17:38:56
412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人