leetcode

时间复杂度的计算方式(Master公式计算递归函数的时间复杂度)

红黑树的了解(平衡树,二叉搜索树),使用场景

红黑树在STL上的应用

贪心算法和动态规划的区别

判断一个链表是否有环,如何找到这个环的起点

实现一个strcpy函数(或者memcpy),如果内存可能重叠呢

实现一个循环队列

排序算法(写快排,归并排序,堆排序),算法的时间复杂度,空间复杂度,是否稳定等

快排存在的问题,如何优化

反转一个链表

Top K问题(可以采取的方法有哪些,各自优点?)

Bitmap的使用,存储和插入方法

二叉树的先序、中序、后序遍历(非递归实现)

二叉树的公共祖先(简单地说,剑指offer上的题大都是高频题)

1-n中有多少个1

字典树(前缀树)的理解以及在统计上的应用

并查集的实现(低频)

数组的全排列

N个骰子出现和为m的概率

海量数据问题(可参考左神的书)

一致性哈希

线段树的实现(一般是区间求解问题,低频)

KMPManacherBfprt算法(进阶)

 

HOT100复杂题

39. 组合总和

42 接雨水

75. 颜色分类

76. 最小覆盖字串

84. 柱状图中最大的矩形

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

数字在升序数组中出现的次数 

posted @ 2021-11-15 10:42  淡然那片天  阅读(65)  评论(0)    收藏  举报