![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
一切都会熬过去的
风不过是摇摆的迟疑
一个有梦想的赎罪者
展开
-
子矩阵的和
通过构建和利用前缀和数组,我们可以在常数时间复杂度内计算任意子矩阵的和,而不需要每次都重新遍历矩阵。这在处理大型矩阵和多个询问时非常高效。的子矩阵的和,即矩阵中的所有元素的和。这次的题目就是利用前缀和思想来优化计算子矩阵和的过程。首先,我们构建一个与输入矩阵大小相同的前缀和数组。可能有很多朋友到这感觉稍微抽象,不能直接的理解。在上一篇的文章中,我们已经介绍了前缀和。Q:为什么能这样计算前缀和呢?现在,我们可以使用前缀和数组。来计算任意子矩阵的和。的子矩阵的和为 21。,然后使用前缀和数组。原创 2023-05-11 23:40:08 · 359 阅读 · 0 评论 -
前缀和算法
通过计算前缀和,我们可以在 O(1) 的时间内得到任意子序列的和,而不需要每次都重新遍历子序列的元素。在计算前缀和时,我们通过迭代遍历数组并累加当前元素,将累加的结果存储在一个新的数组中。新数组中的每个元素表示原数组从开头到当前位置的元素的和。数组中使用了从下标 1 开始的索引,而不是常见的从下标 0 开始的索引。前缀和是一种常用的预处理技巧,用于快速计算数组中某个位置之前(包括该位置)的元素的和。在迭代遍历原数组时,我们累加当前元素并更新前缀和数组中的对应位置。为了方便计算,我们在。原创 2023-05-11 23:39:45 · 39 阅读 · 0 评论 -
数的三次方根
梯度下降法思想:(就是机器学习里的GD,但是没有learning rate)原创 2023-05-11 23:38:20 · 243 阅读 · 0 评论 -
高精度减法
我们先比较两个数的大小,如果被减数比减数小,就将它们交换,并输出一个负号。然后按照普通的减法运算方法,从低位到高位逐位相减,注意在每一位的计算过程中需要加上上一位的借位。最后要去掉结果中的前导0。高精度减法与高精度加法类似,只不过在减法的过程中需要考虑被减数与减数的大小关系,以确定结果是否为负数。表示上一位的借位,初始值为0,每次减法计算时,先减去上一位的借位。最后,还需要注意,当结果中存在前导0时,需要将其去掉。最后将当前位的结果加入到结果数组。小于0,则说明需要向高位借位,此时将。,再减去当前位的值。原创 2023-05-11 23:37:29 · 44 阅读 · 0 评论 -
高精度加法
【代码】高精度加法。原创 2023-05-11 23:36:31 · 35 阅读 · 0 评论 -
算法:数的范围
第一次查找是为了找到元素k的起始位置,通过不断更新左右边界来逼近目标位置。如果当前中间位置的元素大于等于k,则将右边界更新为mid-1,否则将左边界更新为mid+1。如果当前中间位置的元素小于等于k,则将左边界更新为mid+1,否则将右边界更新为mid-1。二分查找的时间复杂度为O(logn),其中n为数组的长度。通过二分法,可以快速找到目标元素在数组中的位置。这样就可以实现在升序排列的数组中使用二分法查找指定元素的起始位置和终止位置。最后,将起始位置和终止位置分别作为函数的返回值,输出到标准输出流中。原创 2023-05-11 23:36:43 · 29 阅读 · 0 评论 -
求逆序对算法
A:在归并排序的过程中,当合并左右两个有序数组时,如果左数组中的某个元素。Q:为什么可以统计统计逆序对数量为 mid - i + 1?的元素都是满足逆序对条件的。因此,逆序对的数量就是。因为左右数组都是有序的,所以可以推断左数组中。在归并排序的合并过程中,当将。大于右数组中的某个元素。及其之后的元素都大于。放入临时数组时,此时。原创 2023-05-11 23:34:41 · 99 阅读 · 1 评论 -
归并排序算法
归并排序的核心思想是分治法,通过不断将数列分成较小的子序列,然后再将这些子序列按顺序合并成一个有序的数列。在每一层的合并操作中,通过双指针的方式比较和合并两个有序的子序列。A:当进行归并合并操作时,我们有两个已排序的子序列,分别位于左半部分和右半部分。每次合并操作都能保证将两个有序子序列合并成一个有序序列,直到最后完成整个数列的排序。归并排序的合并操作是稳定的,即在比较两个元素相等时,我们会优先选择左半部分的元素,这样可以保持相等元素的相对顺序不变。原创 2023-05-11 23:33:44 · 40 阅读 · 1 评论 -
第k个数算法
最后,将基准值放到正确的位置,即将基准值与指针 r 所指的元素交换,这样就完成了一次分区操作。基于快速排序的分治思想。根据分区的结果,可以确定基准值的位置,如果基准值的位置恰好是第 k 个位置,那么它就是第 k 个最小数;此时,右指针 r 左侧的元素都小于基准值,右指针 r 右侧的元素都大于等于基准值。这里的分区操作是基于快速排序的思想,将小于基准值的元素放在基准值的左侧,大于基准值的元素放在基准值的右侧。此时,可以将基准值放到正确的位置上,即将基准值与指针 r 所指的元素交换,这样就完成了一次分区操作。原创 2023-05-11 23:32:56 · 61 阅读 · 1 评论