自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_74834215的博客

刷题笔记、题解记录

  • 博客(32)
  • 收藏
  • 关注

原创 【整数】Q2:二进制加法

接着每一轮中,由于 carry 是由 x 和 y 按位与并且左移得到的,那么最后会补零,所以在下面计算的过程中后面的数位不受影响,而每一轮都可以得到一个低 i 位的答案和它向低 i+1 位的进位,也就模拟了加法的过程。tips:文章部分内容参考算法刷题课程、刷题书籍与网站等,题解、图示及代码内容根据老师课程、二次整理以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。问:在文件中有一堆整数,每一次数都出现了两次,其中有一个值只出现了一次,如何快速找到只出现一次的这个数的值?

2023-10-21 09:56:50 102

原创 【整数】Q1:整数除法

主要思路:为了求得dividend/divisor,可以不断的从dividend里减去divisor,当不能再减去更多的divisor时,循环执行的次数就是商。如果被除数最多大于除数的 倍,则将被除数减去除数的 倍,然后将剩余的被除数重复前面的步骤(由于每次除数翻倍,因此优化后的时间复杂度为 )当然这个过程也和上述的类似,在 里找,16可以有个 个3,剩下4,而4里可以有个 个3,最后把这 都加起来,就是21。那如果是按照位运算呢,就是1个3,2个3,4个3,8个3,以2的n次方这样找。

2023-10-21 09:51:51 92

原创 【STL使用】Q1:STL基本操作

while(!que.pop();return 0;/*容器存储自定义类型必须重载小于号:*/while(!que.pop();return 0;总结:自定义类型自定义输出顺序规则为按照第一个数字从大到小输出/*自定义仿函数:*/while(!que.pop();return 0;it!= s.end();

2023-10-20 14:32:01 89

原创 【欧拉计划】Q15:杨氏矩阵

tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。使用两个for循环对矩阵进行遍历操作,当遍历到target值时输出其行、列的下标值。补充:如果最后的值移动出了矩阵范围,则表示没有找到target值。输出用空格隔开的数表示位置(从1开始计数),答案有唯一解。给定一个n行m列的二维矩阵和一个目标数t,从左到右不下降(右边的数≥左边的数),对于。从上到下不下降(下边的数≥上边的数)。注意:该方法的时间复杂度为。

2023-10-20 14:23:47 73

原创 【欧拉计划】Q14:OnlineJ两数之和

两数之和问题,四种解法时空复杂分析,在不限空间的情况下,最快的方法是哈希表法时间复杂度为O(n)tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。

2023-10-20 14:22:38 58

原创 【欧拉计划】Q13:暴力枚举

刷题总结:对于数字num进行各位5次幂求和的方法i < 10;++i){j < 5;//与回文数字判断代码相似num /= 10;tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。

2023-10-20 13:11:02 66

原创 【欧拉计划】Q12:数塔问题

tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。注意:如果是带有障碍物的问题则数学方法将不再适用,可以在方法1的基础上加入条件判断解决。这样外边界有一圈保护0,不需要判断边界、不用考虑数组越界问题(数字0不会影响答案)

2023-10-20 13:08:22 656

原创 【欧拉计划】Q11:Lattice paths

tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。注意:如果是带有障碍物的问题则数学方法将不再适用,可以在方法1的基础上加入条件判断解决。这样外边界有一圈保护0,不需要判断边界、不用考虑数组越界问题(数字0不会影响答案)

2023-10-20 13:07:19 607

原创 【欧拉计划】Q10:1000-digit Fibonacci number

tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。将两个数组循环相加——用指针将数组的地址作为函数参数传递到函数中,通过交换二维数组第一个下标交换数组地址。

2023-10-20 13:05:52 58

原创 【欧拉计划】Q9:Large sum

tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。

2023-10-20 13:04:33 59

原创 【欧拉计划】Q8:大整数运算

tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。

2023-10-20 13:03:04 53

原创 【欧拉计划】Q7:斐波那契数列的递推与递归求法

tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。斐波那契数列求法:递推(从前向后计算)、递归(从后向前计算),递归由于重复计算导致计算速度很慢——记忆化数组解决。注意:可以看到这里利用递归法求斐波那契数列在进行到30项时,每一项的运算时间已经达到秒级。递归法中存在的大量重复计算导致递归递归太深、运算速度降低,可以使用记忆数组优化程序。递推 ≈ 递归 + 记忆化数组,由于还有一个调用函数栈的过程只能是约等于。

2023-10-20 13:00:12 114

原创 【欧拉计划】Q6:Even Fibonacci numbers

tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。补充:当算法优化到极致时,只能是用空间换时间 or 用时间换空间,而记忆化数组就是典型的用空间换时间。注意:方法1递归步数太多导致出现爆栈(segmentation fault),原因是递归调用太深。

2023-10-20 12:58:25 83 1

原创 【欧拉计划】Q5:Longest Collatz sequence

tips:文章部分内容参考算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。补充:当算法优化到极致时,只能是用空间换时间 or 用时间换空间,而记忆化数组就是典型的用空间换时间。注意:方法1递归步数太多导致出现爆栈(segmentation fault),原因是递归调用太深。

2023-10-20 12:57:03 63 1

原创 【欧拉计划】Q4:Largest product in a series

注意:由于0乘除运算的特殊性,在滑动窗口法的基础上,还需要额外定义一个关于0的计数器。补充:滑动窗口分为动态窗口(双指针法) 与 静态窗口。

2023-10-20 12:55:18 59 1

原创 【欧拉计划】Q3:Largest product in a grid

【代码】【P1欧拉计划】Q3:Largest product in a grid。

2023-10-20 12:53:16 60 1

原创 【欧拉计划】Q2:Largest palindrome product

【代码】【P1欧拉计划】Q2:Largest palindrome product。

2023-10-20 12:50:42 81 1

原创 【欧拉计划】Q1:Multiples of 3 and 5

思路:3或5的倍数之和 = 3的倍数之和 + 5的倍数之和 - 15的倍数之和(减去重复计入值)

2023-10-18 18:40:33 70

原创 【数学知识】04:扩展欧几里得算法

【代码】【P5数学知识】04:扩展欧几里得算法。

2023-10-18 18:22:37 62

原创 【数学知识】03:快速幂

的时间复杂度内求出结果,其中满足。快速幂的核心:反复平方法。

2023-10-18 18:20:40 82

原创 【数学知识】02:欧拉函数

如果需要求出1~N中,每一个数字的欧拉函数,这时再使用公式法(将每个数都分解质因数)将导致时间复杂度为。

2023-10-18 18:19:06 77

原创 【数据结构】03:队列

【代码】【P2数据结构】03:队列。

2023-10-18 17:41:08 47

原创 【数据结构】02:栈

【代码】【P2数据结构】02:栈。

2023-10-18 17:39:57 52

原创 【数据结构】01:链表

用数组模拟单链表,使用单链表构建一个邻接表(n个链表),用邻接表(最短路问题、最小生成树、最大流)进行存储图和树,数组实现的链表可以做指针实现的链表的所有事情,且数组实现的链表更快(静态链表),动态链表new操作太慢。用数组模拟双链表,双链表可用于优化某些问题,

2023-10-18 17:31:03 89

原创 【基础算法】08:离散化与区间合并

离散化问题的性质,整个值域的跨度很大,但是数据非常的稀疏。

2023-10-18 17:12:22 54

原创 【基础算法】07:位运算

tips:文章内容参考acwing算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。

2023-10-18 17:09:27 45

原创 【基础算法】06:双指针算法

参考:https://www.acwing.com/solution/content/23474/所以引出一个新的check方法:对于寻找是否有重复数字,一般用hash,没人用暴力。由于check函数写的不好循环太多,直接是暴力计算找重复数字的,显然不好。

2023-10-18 16:53:37 55

原创 【基础算法】05:前缀和与差分

的时间来实现对原数组,中间的某一段区间数值全部加上一个固定的值C,只需要在差分数组中修改两数即可。

2023-10-18 16:48:17 59

原创 【基础算法】04:高精度运算

【代码】【基础算法】04:高进度运算。

2023-10-18 16:44:16 53

原创 【基础算法】03:二分查找

定义某种性质,使得右半边的部分全部满足该种性质,而左半边的部分全部都不满足该种性质。而二分可以寻找性质的边界。二分的本质并不是单调性,而是一种边界。

2023-10-18 16:42:37 71

原创 【基础算法】02:归并排序

当你发现 4 比 3 大的时候,也就是说右边最大的元素都小于左边最小的元素,那么左边剩下的5和6都必然比右边的所有元素大,因此就可以不用数5和6的情形了,直接分别加上右半边的元素个数就可以了,这一步就降低到了O(n), 我们知道递归式 T(n) = 2T(n/2)+O(n) = O(nlogn)的,所以排序的成本是可以接受的,并且这一问题下,可以很自然地使用归并排序。这个时候我们注意到一个很重要的性质,左右半边的元素在各自任意调换顺序,是不影响第三步计数的。注:关于2路归并的归并树(倒立的二叉树)

2023-10-18 16:38:27 82

原创 【基础算法】01:快速排序

注:经典快速排序总是指定数组的最后一个元素作为基准值,随机快速排序指定数组或者某一部分中的随机值作为基准值。

2023-10-18 16:31:57 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除