leetcode
时间复杂度的计算方式(Master公式计算递归函数的时间复杂度)
红黑树的了解(平衡树,二叉搜索树),使用场景
红黑树在STL上的应用
贪心算法和动态规划的区别
判断一个链表是否有环,如何找到这个环的起点
实现一个strcpy函数(或者memcpy),如果内存可能重叠呢
实现一个循环队列
排序算法(写快排,归并排序,堆排序),算法的时间复杂度,空间复杂度,是否稳定等
快排存在的问题,如何优化
反转一个链表
Top K问题(可以采取的方法有哪些,各自优点?)
Bitmap的使用,存储和插入方法
二叉树的先序、中序、后序遍历(非递归实现)
二叉树的公共祖先(简单地说,剑指offer上的题大都是高频题)
1-n中有多少个1
字典树(前缀树)的理解以及在统计上的应用
并查集的实现(低频)
数组的全排列
N个骰子出现和为m的概率
海量数据问题(可参考左神的书)
一致性哈希
线段树的实现(一般是区间求解问题,低频)
KMP,Manacher,Bfprt算法(进阶)
HOT100复杂题
39. 组合总和
42 接雨水
75. 颜色分类
76. 最小覆盖字串
96. 不同的二叉搜索树
128. 最长连续序列
139. 单词拆分
复杂链表的复制
https://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba?tpId=13&tqId=23254&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
删除链表中重复的结点
ListNode* deleteDuplication(ListNode* pHead) {
ListNode* dummy = new ListNode(-1);
ListNode* tail = dummy;
while(pHead != nullptr){
// 判断避免跳过之后是否还有连续结点 {1,2,3,3,4,4,5}
if(pHead->next == nullptr || pHead->next->val != pHead->val){
tail->next = pHead;
tail = tail->next;
}
while(pHead->next!=nullptr && pHead->val == pHead->next->val){
pHead = pHead->next;
}
pHead = pHead->next;
}
tail->next = nullptr;
return dummy->next;
}
ListNode* deleteDuplication(ListNode* pHead) {
ListNode* dummy = new ListNode(-1);
ListNode* tail = dummy;
while(pHead != nullptr){
if(tail->val != pHead->val){
tail->next = pHead;
tail = tail->next;
}
pHead = pHead->next;
}
tail->next = nullptr;
return dummy->next;
}
重点题目
23. 合并K个升序链表 分治/递归或者归并
1. 两数之和
一遍hash
2. 两数相加
模拟加法
3. 无重复字符的最长子串
滑动窗口
4. 寻找两个正序数组的中位数
简单归并,log(m+n)有点复杂
5. 最长回文字串
动态规划 遍历长度
10. 正则表达式匹配
有点难,战略放弃
11. 盛最多水的容器
双指针,移动最小的短板
15 三数之和
排序 + 双指针
17. 电话号码的字母组合
回溯法
19. 删除链表的倒数第 N 个结点
双指针
22. 括号生成
回溯 + 剪枝
回溯算法讲解:
https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/solution/c-zong-jie-liao-hui-su-wen-ti-lei-xing-dai-ni-ga-4/
https://leetcode-cn.com/problems/subsets/solution/c-zong-jie-liao-hui-su-wen-ti-lei-xing-dai-ni-gao-/
排序算法
-
手写快速排序(快速排序的基准)
-
归并排序
-
堆排序
哈希表
- 哈希处理冲突的解决方法
- 开放地址法
- 链表法
二叉树
- 二叉树的非递归前序遍历,中序遍历,后续遍历,层序遍历
- 二叉树的高度
- 二叉树的镜像
- 二叉树的前k大个节点(堆排序)
- 红黑树和平衡二叉树
高级数据结构
- 红黑树
- 前缀树
算法
- 找到数组中第一次出现1次的值
- 背包九讲
- 最大回文子串(动态规划)
- 最长公共子序列(动态规划)
- 最长重复子序列(find和rfind的应用)
- 找零钱问题(动态规划&贪心算法)
- 排列组合问题(递归&回溯)
海量数据处理问题
二分查找边界问题总结:
https://blog.csdn.net/qq_43778308/article/details/108623206
数字在升序数组中出现的次数
浙公网安备 33010602011771号