0. 思想
实践的顺序,
应该是先将基础的 数据结构题目类型给实现。
然后再开始尝试 实现对应类型的算法题目,如回溯算法, 贪心算法, 动态规划, 图论;
-
基础的数据结构, 推荐卡尔的:
代码随想录:https://programmercarl.com/; -
算法部分,卡尔的内容结合: https://labuladong.online/algo/home/; 两者在原理解释上结合来看;
-
计算机基础知识,
操作系统、计算机网络、数据结构与算法、数据库、计算机组成原理, 基本
踏实的学习应该是在大学本科, 后续可以自学, 参考 阿秀的笔记
https://interviewguide.cn/notes/01-guide/web-guide-reading.html;
此外, 在面试过程中,
写代码时, 会出现ACM 的编程风格,即需要自己处理输入,输出,这里推荐参考:
1. 基本数据结构
- 算法性能分析
主要 分 时间复杂度 和空间复杂度 两大部分;
自己查询;
1.1 数组
- 二分查找 lc 704;
- 移除元素 lc27;
- 有序数组的平方 lc977;
- 长度最小的子数组 lc 209;
- 螺旋矩阵II lc59;
1.2 链表
- 移除链表元素 lc203;
- 设计链表 lc707;
- 反转链表 lc206;
- 两两交换链表中的节点 lc24;
- 删除链表的倒数第N 个节点 lc19;
- 链表相交; 面试题 02.07;
- 环形链表II, lc142
1.3 哈希表
- 有效的字母异位词 lc 242;
- 两个数组的交集 lc349;
- 快乐数字 lc202;
- 两数之和 lc1;
- 四数相加 lc454;
- 赎金信 lc383;
- 三数之和 lc15;
- 四数之和 lc18
1.4 字符串
- 反转字符串 lc344;
- 反转字符串II, lc541;
- 替换空格, 剑指offer 05;
- 翻转字符中的单词, lc151;
- 左旋转字符串 剑指offer58;
- 实现strStr 函数, lc28;
- 重复的 子字符串 lc459;
1.5 栈与 队列
- 栈实现队列 lc232;
- 队列实现栈, lc225;
- 有效的括号 lc20;
- 删除字符串中所有相邻重复项 lc1047;
- 逆波兰表达式求值, lc150;
- 滑动窗口最大值 lc239;
- 前K个 高频元素 lc347;
1.6 二叉树 专题
1.6.1 深度优先遍历的递归实现方式;
144.二叉树的前序遍历
94.二叉树的中序遍历
145.二叉树的后序遍历
1.6.2 深度优先遍历的迭代实现方式;
144.二叉树的前序遍历
94.二叉树的中序遍历
145.二叉树的后序遍历
1.6.3 深度优先遍历的迭代方式的统一实现;
144.二叉树的前序遍历
94.二叉树的中序遍历
145.二叉树的后序遍历
1.6.4 广度优先遍历(层序遍历);
102.二叉树的层序遍历
107.二叉树的层次遍历II
199.二叉树的右视图
637.二叉树的层平均值
429.N叉树的层序遍历
515.在每个树行中找最大值
116.填充每个节点的下一个右侧节点指针
117.填充每个节点的下一个右侧节点指针II
104.二叉树的最大深度
111.二叉树的最小深度
1.6.5 反转二叉树;
lc226;