- 博客(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
原创 【数据结构】01:链表
用数组模拟单链表,使用单链表构建一个邻接表(n个链表),用邻接表(最短路问题、最小生成树、最大流)进行存储图和树,数组实现的链表可以做指针实现的链表的所有事情,且数组实现的链表更快(静态链表),动态链表new操作太慢。用数组模拟双链表,双链表可用于优化某些问题,
2023-10-18 17:31:03
89
原创 【基础算法】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
原创 【基础算法】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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人