c++算法笔记
文章平均质量分 68
算法课的笔记
KnifeDove
咕咕咕
展开
-
算法笔记2.高精度计算,前缀和,差分
有的时候,我们需要计算一个数组的中一段连续的数的和,比如有个长度为10的数组,我们需要计算第2到第5个元素的值的和。这时候就需要用到前缀和(基本上也就这里用)前缀和差分是逆运算,就像积分和微分的关系一样。A是B的前缀和数组,B是A的差分。为了避免混淆,后面统称为原数组和差分数组。有的时候我们需要在一个数组的一个区间的每一位的值都增加。这时候就可以用到差分了。原创 2024-03-16 16:11:56 · 540 阅读 · 0 评论 -
算法笔记3.双指针,位运算,离散化,区间合并
位运算就是将一个数转换为二进制后对二进制位进行计算。其中有一个lowbit问题,意思是要得到一个数的二进制形态的最后一位1。有的时候我们会遇到那种给我们一堆区间,然后要求我们合并区间(就是将区间中有内容重复的合并成一个大区间,可以理解成是将有交集的变成并集)原创 2024-03-16 22:45:30 · 442 阅读 · 0 评论 -
算法笔记1.快速排序,归并排序,二分查找
得到的数组都是排好序的,所以可以从两个数组的左端开始,比较两个值将小的放入结果数组,然后继续比较,直到一个数组被取完,再将剩下的数组拼到最后即可。排序前先找到一个值作为中间值(代码模板中是取数组第一个数),然后每次排序确保这个中间值左边的数都小于等于中间值,中间值右边的数都大于等于中间值。这个排序是先将数组切到最小,比如最小的左右两边的数组都只有一个元素(不需要排序也就算是排好序了),然后合并到一起。当左右两边递归结束后,将得到两个排好序的数组,然后再将两个数组合并到一起。原创 2024-03-13 21:48:23 · 311 阅读 · 0 评论