算法学习日志

计划

预计两个月。(±一个月)

实际情况
  1. 快速排序。
    算法思想:分治; 时间复杂度:O(nlogn)
    ——2020/5/13

  2. 归并排序。
    算法思想:分治; 时间复杂度:O(nlogn)
    ——2020/5/14

  3. 整数二分。
    难点,划重点。

    注1:捋一下搞不懂的地方,对于求上下界问题中的check()函数很乱。

    注2:算法思想:折半查找,根据某一性质来判断每次是进入左区间 or 右区间。
    时间复杂度:O( logn )

    注3:对于两种模板,画一个图一下子边界就能出来了,要注意的地方是当L = mid时,mid = (L + R ) / 2 需变成 mid =( L + R + 1) / 2,这是为了避免 L = R -1 时,可能出现死循环的情况。
    ——2020/5/15/10:20

  4. 浮点数二分。
    算法思想:折半查找
    注1:因为是浮点数,故不存在整数二分中的边界问题,mid = (L + R) / 2.0 即可。

  5. 高精度加法(大整数 + 大整数)。
    算法思想:数组存储,模拟手算加法的过程
    ——2020年5月16日11:16:10

  6. 高精度减法(大整数 - 大整数)
    ——2020年5月24日22:17:10

  7. 高精度乘法(大整数 * 小整数)
    ——2020年5月24日22:18:11

  8. 高精度除法(大整数 整除 小整数)

    注:4种高精度算法中,数组低位存放个位数字,;例如:a = “123456”,A = {6,5,4,3,2,1}.
    ——2020年5月29日16:07:32

  9. 前缀和(s[ l, r ] = s[ r ] - s[l - 1)
    步骤:1、递推求前缀和; 2、 求区间和
    ——2020年5月29日16:48:53

  10. 二维前缀和
    步骤:1、递推求前缀和;2、求区间和
    ps:画个图,一目了然
    ——2020年5月29日22:32:10

  11. 一维差分
    效果:类似前缀和的逆运算,使得区间加:[L, R] 上的数都各加上一个常数,时间复杂度从O(n)降为 O(1);
    实现:差分数组 B[L] += C, B[R + 1] -= C
    ——2020年6月16日15:32:40

  12. 二维差分
    差分的思路都是一样的,跟一维的差别就是计算方式、求前缀和不同。
    ——2020年6月16日16:54:59

  13. 双指针算法。
    难点,划重点。
    模板看起来虽简单,但是用起来,一脸懵逼~

  14. 位运算
    主要介绍两种位运算:
    (1)求n的二进制表示的第k位数字;
    (2)lowbit(n)操作:求得n二进制表示的最后一位1的大小;
    具体实现:lowbit(n)= n & -n,因 C++中 -n = n取反+ 1
    ——2020年6月29日15:27:04

  15. 离散化。
    难点,划重点。
    主要思想是:数据范围大,但数据个数小,将其映射到一个小的空间,大大降低复杂度,提高效率。例题挺难的呀,理解了一丢丢,说不定以后能更理解一些,哈
    ——2020年7月7日18:54:51

  16. 区间合并。
    相对来说,比较简单一些,将区间存储于 pair类型 的数组中,合并操作:排序、三种情况进行合并、放进临时数组中。

  17. 静态链表。
    采用数组模拟,即静态的链表,为什么不用动态的呢?原因是C++里的new操作非常慢,算法题若使用,80%会超时。

END
————————————
该往哪里走
————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值