算法学习总结1

一、解题技巧

        (1)时间复杂度、空间复杂度估计

        (2)滑动窗口法  定长问题  通过滑动窗口更新答案

        (3)双指针法      不定长问题   从头尾分别遍历更新,并不一定是真的用指针

        (4)记忆数组  记忆数组+递归 ≈ 递推   用时间换空间

        (5)方向数组  防止越界  1. 判断边界 

                                                  2. 填充零

二、大整数/高精度问题

        (1)数字存储方式   1. 倒着存

                                          2. 用数组存

                                          3. 数组第一位存储数字长度

        (2)计算方法   按位计算,然后进位

        (3)大整数除法   要维护 待除数

三、网格路径,数塔问题

        递推问题   从上到下求解,从下到上求解

四、二分问题

        sort容器、朴素二分查找、二分查找特殊情况、二分答案、二分答案小数情况

        二分答案的本质就是用函数代替了数组

 1) 00001111情况

while(L != R){
    mid = (L + R) / 2;
    L = mid + 1;
    R = mid;
}

2) 11110000情况

while(L != R){
    mid = (L + R + 1);
    L = mid;
    R = mid - 1;
}

3)二分答案要素

        1.   “答案”是什么    通过答案可以计算什么

        2.   答案的上下区间是什么

        3.   是哪种特殊情况

五、STL容器的使用

        string、vector、stack、queue、deque、priority_queue、list、

        set集合(红黑树实现)、map映射(红黑树实现)、unordered_set/map(哈希表实现)、

        unordered_multiset/map

        1)vector 扩容方法取决于编译器 2倍或者1.5倍

        2)deque内部实现  维护指针表,连续空间维护地址域,在外部开辟数据域,二次访问。

        3)set的插入删除查找都是时间复杂度都是对数级,而unordered_set   插入查找都是常数级

六、经典题型

        模拟、贪心、枚举

        1) 编码能力就是把思路实现成代码的能力。

        2)枚举题的难点是确定循环的范围

        3)前缀和数组 快速求区间和  

几天不刷题,啥都不会了o.o

        

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值