- 博客(11)
- 收藏
- 关注
原创 基础算法--欧拉函数
(Euler’s totient function),也称为费马函数,是一个与正整数相关的数论函数,用符号 φ(n) 表示。欧拉函数 φ(n) 定义为小于或等于 n 的正整数中与 n 互质的数的个数。具体而言,对于给定的正整数 n,欧拉函数 φ(n) 计算满足以下条件的 k 的个数: 1 ≤ k ≤ n,且 k 与 n 互质(即 k 和 n 的最大公约数为 1)。首先,我们需要将 n 分解为质因数的乘积形式。所以,φ(10) = 4,表示小于或等于 10 的正整数中与 10 互质的数的个数为 4。
2024-04-02 13:13:15 1273 1
原创 基础算法--分解质因数
质数(Prime number)是指大于 1 的自然数,除了 1 和它本身之外没有其他正因数的数。换句话说,质数只能被 1和它本身整除,不能被其他任何自然数整除。以下是一些示例质数:2、3、5、7、11、13、17、19、23、29 等。对于输入的正整数 84,质因数分解的结果为 “2 2 3 7”。分解质因数是将一个正整数表示为一系列质数的乘积的过程。
2024-04-02 11:08:11 212 1
原创 基础算法--最大公约数
最大公约数(Greatest Common Divisor,缩写为GCD)是指两个或多个整数共有的最大的约数。欧几里得算法:两个整数a和b的最大公约数等于a除以b的余数c和b之间的最大公约数。时间复杂度为O(log(min(a, b)))这里用欧几里得算法实现求两个数的最大公约数。因此,24 和 36 的最大公约数为 12。
2024-04-02 10:50:16 173 1
原创 算法基础--快速幂
快速幂算法的关键思想是将指数转化为二进制形式,利用这个二进制表示,我们可以通过分治的思想来进行乘法运算。通过不断平方底数和移位操作,可以避免重复计算,并且只需进行少量的乘法运算,从而加快幂运算的速度。快速幂算法通过分治的思想,将指数分解为二进制表示,利用二进制位上的幂次关系,以减少乘法和取模操作的次数,从而提高计算效率。传统的幂运算算法是通过循环逐步进行乘法运算,即将底数乘以自身多次,直到达到指定的指数。快速幂算法在很多需要进行幂运算的场景中都有应用,例如密码学中的RSA算法、计算机图形学中的三维变换等。
2024-04-02 10:35:04 314 1
原创 基础算法--背包问题
然后使用递推关系式计算dp数组的值,最终dp[n][W]就是问题的解,其中n为物品的数量,W为背包的容量。背包问题是一个经典的组合优化问题,其目标是在给定的一组物品中选择一些物品放入背包中,使得物品的总价值最大化,同时要求背包的总重量不超过背包的容量限制。如果物品i的重量大于当前背包容量j,则无法放入背包中,此时dp[i][j]等于dp[i-1][j],即前i-1个物品在背包容量为j时的最大价值。4、最终,dp[n][W]就是问题的解,其中n为物品的数量,W为背包的容量。
2024-04-01 19:52:18 1810
原创 基础算法--树状数组(前缀和加强版)
第四个值:i+1 = 4 ,二进制表示为0100,二进制1的最低位在右边第三个位置,lowbit值为3,tree[4]放在第三层,tree[4] = tree[2] + tree[3] + array[3] = array[0] + array[1] + array[2] + array[3] = 11;第二个值:i+1 = 2 ,二进制表示为0010,二进制1的最低位在右边第二个位置,lowbit值为2,所以tree[2]放在第二层,且tree[2] = array[0]+array[1] = 4;
2024-03-31 09:53:22 1015 1
原创 基础算法--二维前缀和
其中,prefixSum[row2][col2] 表示右下角坐标处的前缀和,prefixSum[row1-1][col2] 和 prefixSum[row2][col1-1] 分别表示排除一部分多计算的区域的前缀和,prefixSum[row1-1][col1-1] 表示左上角坐标处的前缀和。2、计算每个位置的前缀和:对于位置 (i, j) 的元素,它的前缀和等于原始矩阵中该位置的元素值加上前一行和前一列的前缀和之和,再减去左上方的元素的前缀和。prefixSum[0][2]:第一行所有元素的和。
2024-03-30 16:46:43 410
原创 基础算法--差分
1、假设要对原数组 nums 的区间 [left, right] 内的元素都增加一个值 val,即 nums[left] += val,nums[left+1] += val, ……2、对于原数组 nums 的相邻元素 nums[i] 和 nums[i+1],将其差值存储在差分数组 diff[i] 中,即 diff[i] = nums[i+1] - nums[i]差分(Difference Array)用于高效地对数组进行区间更新操作。1、创建一个与原数组相同大小的差分数组 diff,初始值都为 0。
2024-03-30 15:03:43 201
原创 基础算法--前缀和
前缀和(Prefix Sum)是指数组中从起始位置到当前位置的元素的累加和。在给定数组中,可以通过计算前缀和来快速获取子数组的和,而不需要每次都重新计算。
2024-03-30 14:22:35 110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人