[算法下] 2.常见题目与技巧

1. 前缀和

  1. 解决快速求解区域和问题

一维前缀和

le303. 区域和检索 - 数组不可变

二维前缀和

le304. 二维区域和检索 - 矩阵不可变

3. 启发式搜索

广搜可视化

  1. 广搜走地图解决2个问题,本质上是暴力尝试,判断离起点有多远作为值
    1. 联通性问题
    2. 最少步数问题

启发可视化

  1. 启发式搜索判断的值有2个依据:离起点有多远,预估离终点有多远(欧式距离,2点之间距离公式),举例Astar搜索;对比bfs把距离起点的层数作为估值
  2. 使用优先队列
  3. 启发式搜索打印最终的搜索路径

4. LRU最近缓冲系统

le146 LRU 缓存机制


双向链表记录数据,使用时用映射去实现快速访问

  1. 双向链表,有1个虚拟左指针,1个虚拟右指针,中间是存储每一个缓存数据
  2. 几个关键点:
    1. 数据用双向list存
    2. 如何快速访问?用map建立映射,快速访问
    3. 插入和删除操作

5. 洛谷 1629邮递员送信

  1. 用bellman_ford算法,存边的时候用链式前向星

题目

le19. 删除链表的倒数第 N 个结点

le24. 两两交换链表中的节点

  1. 但凡对链表头节点进行操作的就要搞一个虚拟头节点

le83. 删除排序链表中的重复元素

le82. 删除排序链表中的重复元素 II

le141. 环形链表 (快慢指针)

  1. 拓展:求环的起点(快慢指针相遇时,将快指针或慢指针移到起点,然后快慢指针一次走一步,重合时就是环的起点)

le160. 相交链表

le202. 快乐数==(链表判环)==

le203. 移除链表元素

  1. l指向哪些点已经确定ok,r指向未确定的点

le206. 反转链表

le237. 删除链表中的节点


判断入栈元素和出栈是否匹配

  1. 栈顶元素是否等于出栈的第一个元素,不等一直入栈

3.pop_stack_出入栈合法匹配.cpp

le946. 验证栈序列


le844. 比较含退格的字符串

le1047. 删除字符串中的所有相邻重复项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值