【算法笔记】极客时间 算法面试通关40讲 笔记  覃超

【算法笔记】极客时间 算法面试通关40讲 覃超

相关链接

  1. 课程链接(付费):https://time.geekbang.org/course/intro/130
  2. 部分PPT: [https://github.com/s32n/algorithm](https://github.com/ s32n/algorithm)
  3. 代码链接:
  4. 别人的总结:算法面试通关40讲-总结

在leetcode 上的题号

数组、链表:

206 . 反转链表 
24 . 两两交换链表中的节点 
141 . 环形链表 
142 . 环形链表 II
25 . K个一组翻转链表

(堆)栈stack、队列queue

注意:
堆是另一种数据结构,
不会让手写,每个语言都自己有实现。

栈:先入先出FILO,压栈出栈
队列:先入先出FIFO

常见数据结构操作的时间复杂度:
(栈和队列的插入删除查找的时间复杂度是相同的)

在这里插入图片描述

常见算法的时间复杂度如下:

在这里插入图片描述

20 . 有效的括号 
21 . 用栈实现队列 
225 . 用队列实现栈 

优先队列

实现机制:

  1. 用堆: 二叉堆 多项式堆 斐波那契堆
  2. 二叉搜索树

小顶堆,越小的越排在前面,最小的在最顶部。
大顶堆 同理,根节点最大。

维基百科 :heap wiki 堆

下图可知,最简单的二叉堆性能不好。严格斐波那契堆 性能较好。

在这里插入图片描述

703 . 数据流中的第K大元素 
239 . 滑动窗口最大值  难理解啊

使用 python 直接调用现成的heapq 堆排列实现,最小堆实现

滑动窗口问题,双端队列。

705 . 粉碎糖果  kth-largest-element-in-a-stream
706 . 滑动窗口最大值

哈希表: map 和 set  映射和集合

哈希表:映射表一样的东西,方便快速查找。
哈希函数:将所有的转(取模)到一个表中找到,表的索引通过 哈希函数计算出来。 
哈希碰撞: 数据的数量大于表的长度时,就一定会冲突,公用同一个模具。

hashmap 和 hashset :插入删除查找O(1),但存储数据无序.
treemap 和 treeset :插入删除查找O(logN),但存储数据有序.

python 字典默认的就是 hashmap 实现的。

242 . 有效的字母异位词 
1 . 两数之和 
15 . 三数之和.  难点
18 . 四个数之和

树,图、二叉(搜索)树

大概念:
树子
二叉树(面试最常见)
二叉搜索树

小概念
父亲节
孩子节点
左右孩子
根节点

二叉树
完全二叉树

链是特殊化的树
树是特殊化的图
图 地图走路径最短时会使用到。(面试很少考到)

二叉搜索树,又称为 有效二叉树、排序二叉树,空树也是二叉搜索树。具备如下性质:

  1. 左子树所有的节点的值均小于它的根节点的值。
  2. 右子树所有的结点的值均大于它的根节点的值;
  3. 递归,左右子树也都满足上面的条件。

(
节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
)

注意:
不是左右孩子直接比较,还需要根节点的参与。
中序遍历后是升序的。

特点:
5. 平均的搜索插入删除的时间复杂度是 O(logN)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值