Files
Learn-Algorithms/9 Algorithms Job Interview/README.md
T

143 lines
2.5 KiB
Markdown
Raw Normal View History

2021-09-08 00:45:07 +08:00
# 面试题
2014-05-13 17:10:46 +08:00
2015-11-28 14:26:36 +08:00
这部分内容是算法问题合集,题目大多来自网络和书籍。我做了下简单的整理,很多题做了一些思路标记。
2014-05-13 17:10:46 +08:00
2021-09-08 00:45:07 +08:00
## [字符串](1%20字符串.md)
2014-05-13 17:10:46 +08:00
计算机处理的数据除了数值,就是字符。字符处理的常见问题包括:
2015-11-28 21:40:11 +08:00
* 单词反转
* 回文判断
* 字符串的压缩
* 字符串的排列和组合
* 字符串比较
* 子串
2014-05-13 17:10:46 +08:00
2015-11-28 21:40:11 +08:00
2021-11-05 13:12:46 +08:00
数组,字符串问题常用解题套路:二分查找、 快慢指针、 左右指针、 滑动窗口、 前缀和数组、 差分数组。
2015-11-28 14:26:36 +08:00
2021-09-20 13:28:54 +08:00
## [链表](2%20链表.md)
2015-11-28 14:26:36 +08:00
2015-11-28 21:40:11 +08:00
链表处理的常见问题包括:
2015-11-28 21:12:00 +08:00
* 链表反转
* 链表中是否有环
* 删除链表中的p节点,在p节点前面插入节点q, 要求O(1)复杂度
* 2个链表相交
* 2个链表合并
2015-11-28 14:26:36 +08:00
2021-09-08 00:45:07 +08:00
## [栈和队列](3%20堆和栈.md)
2015-11-28 14:26:36 +08:00
2015-11-28 21:45:54 +08:00
这是最基本数据结构,相对容易理解。
2015-11-28 14:26:36 +08:00
2021-09-08 00:45:07 +08:00
## [数值问题](4%20数值问题.md)
2014-05-13 17:10:46 +08:00
2015-11-28 21:40:11 +08:00
这部分都是一些数学几何计算方面的问题。 主要有:
2014-05-13 17:10:46 +08:00
2015-11-28 21:40:11 +08:00
* 位运算
* 随机数
* 大数问题
2014-05-13 17:10:46 +08:00
2021-09-08 00:45:07 +08:00
## [数组数列问题](5%20数组数列问题.md)
2015-11-28 21:12:00 +08:00
2015-11-28 21:40:11 +08:00
这部分的问题都集中在数据集合上。主要有:
* 数组排序
* top-k
* 子数组
* 多个数组合并,交集
2015-11-28 21:12:00 +08:00
2021-09-08 00:45:07 +08:00
## [矩阵](6%20矩阵.md)
2015-11-28 21:12:00 +08:00
2015-11-28 21:40:11 +08:00
这部分都是矩阵和二维数组相关的问题。
2015-11-28 21:12:00 +08:00
2021-09-08 00:45:07 +08:00
## [二叉树](7%20二叉树.md)
2014-05-13 17:10:46 +08:00
2021-11-05 13:12:46 +08:00
常见问题
2014-05-13 17:10:46 +08:00
2015-11-28 21:40:11 +08:00
* 遍历
* 翻转
* 子树
2021-11-05 13:12:46 +08:00
解题思路:递归
2014-05-15 18:54:16 +08:00
2021-09-08 00:45:07 +08:00
## [图](8%20图.md)
2014-05-13 17:10:46 +08:00
2015-11-28 21:45:54 +08:00
图相关的问题
2014-05-13 17:10:46 +08:00
2014-05-15 18:54:16 +08:00
2021-09-08 00:45:07 +08:00
## 智力思维训练
2014-05-13 17:10:46 +08:00
2015-11-28 21:12:00 +08:00
2021-11-07 01:15:35 +08:00
# 刷题框架套路
遍历
```
# 数组遍历框架
void traverse(int[] arr) {
for (int i = 0; i < arr.length; i++) {
// 迭代访问 arr[i]
}
}
# 链表遍历框架
void traverse(ListNode head) {
for (ListNode p = head; p != null; p = p.next) {
// 迭代访问 p.val
}
}
```
2015-11-28 21:12:00 +08:00
2021-09-08 00:45:07 +08:00
2021-11-07 01:15:35 +08:00
递归
2015-11-28 14:26:36 +08:00
2021-11-07 01:15:35 +08:00
```
# 链表递归
void traverse(ListNode head) {
// 递归访问 head.val
traverse(head.next);
}
2015-11-28 14:26:36 +08:00
2021-11-07 01:15:35 +08:00
# 二叉树递归
void traverse(TreeNode root) {
traverse(root.left);
traverse(root.right);
}
# 多叉树递归
void traverse(TreeNode root) {
for (TreeNode child : root.children)
traverse(child);
}
# 图的递归:,用个布尔数组 visited 做标记就行了
2019-10-08 21:00:25 +08:00
2015-11-28 14:26:36 +08:00
2021-11-07 01:15:35 +08:00
```
# 参考
2015-11-28 14:26:36 +08:00
2021-08-02 13:09:06 +08:00
[九度OJ](http://ac.jobdu.com/index.php)
[leetcode 题目](https://leetcode.com/)
2021-11-07 01:15:35 +08:00
[labuladong 的算法小抄](https://labuladong.gitee.io/algo/1/2/)
[《剑指offer》](剑指offer/README.md) 《剑指offer》里面给出了50到高质量的算法问题,很有学习的必要。
[《编程之美》](编程之美/README.md)
2014-05-13 17:10:46 +08:00