- 博客(5)
- 收藏
- 关注
原创 数论基础2
给出正整数n,可以求出n的唯一分解式n = p1的a1次方 + p2的a2次方 + ... + pk的ak次方,对于n的任意正约数也只能包含p1, p2等素因子,而不能有新的素因子出现,对于n的任意一个素因子,它在所求的约数中的指数可以是0, 1, 2,...,ai共ai + 1中情况,且不同素因子相互独立,所有可以根据乘法原理,n的正约数个数为:(a1+1) * ( a2 + 1) * ... * (ak + 1)设全排列个数为x,则有a1!
2024-03-31 20:44:25
742
1
原创 数论基础1
也就是辗转向除法,关键在于恒等式:gcd(a,b) = gcd(b, a mod b)和边界条件gcd(a, 0) = a。方程ax = 1(mod n) 的解称为a关于模n的逆。当gcd(a,n) = 1时,方程有x的唯一解,否则方程无解。拓展欧几里得算法---找出一对数(x, y), 使得ax+by = gcd(a,b), a,b不一定是正数。利用gcd还可以求出两个整数a,b的最小公倍数lcm(a,b),这里引出。边界条件:gcd(a, 0) = 1*a - 0*0 = a;
2024-03-26 21:13:30
239
原创 动态规划1
在使用二维数组的时候,递推公式:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);所以dp[i][j] = max(dp[i-1][j],dp[i-1]j-weight[i]]+value[i]);对于dp[i][j] ,有两个方向,放物品i,就是dp[i-1][j-weight[i]]+value[i]dp数组的初始化,首先dp[i][j] 向i递增方向,j递增方向推的,所以dp[0][j]应该初始化推出,
2024-03-24 22:06:57
257
原创 代码随想录第二天| 977.有序数组的平方,209.长度的子数组,59. 螺旋矩阵 II
如果用双for循环,时间复杂度O(n*n),数据严一点就过不了了,力扣暴力过不了。最后,题目描述中说,请思考时间复杂度为O(nlogn)的解法,暂时未想到。思想:主要是用循环模拟往数组填写数字的过程,然后注意边界条件的处理。运用了双指针的思想,类似个滑动窗口,时间复杂度O(n)代码更简洁,思维上跟巧妙一些。主要考察双指针的思想。
2023-04-21 22:44:29
336
1
原创 代码随想录第一天| leetcode704. 二分查找、27. 移除元素
fast用来寻找新数组的下一个元素,low用来确定新数组下个元素的下标。主要是维护区间的合法化;
2023-04-19 23:03:17
532
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人