之前和同为面试官的朋友闲聊的时候发现,有些求职者嘴上红黑树、KMP头头是道,项目经历看上去也是buff拉满,结果就面一道LRU,写半天还是个错的。
只能说想捞都捞不动!!!
作为面试官在校招/社招面了50多场,可以很负责任地告诉大家,考到二分法,双指针,字符串,动规这类题,都是真心想捞你...
而且考点都没啥变化,最多也就是题型会做出一点变化,针对这类经典算法我只能说两个字:
![v2-a302cd440fe78953243c9791213b4447_b.jpg](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-a302cd440fe78953243c9791213b4447_b.jpg)
这里也大方分享几招,供大家参考学习:
1、面试中的高频算法:“相向双指针”举例
![v2-3bcd5dc3bde80364eeedad3e5586ac6b_b.jpg](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-3bcd5dc3bde80364eeedad3e5586ac6b_b.jpg)
相向双指针参考题型:
通用解题思路
使用条件
滑动窗口(90%)
时间复杂度 O(n) (80%是双指针)
要求原地操作,只可以使用交换,不能使用额外空间(80%)
有子数组 subarray / 字符串 substring 的关键词 (50%)
有回文 Palindrome 关键词(50%)
复杂度
时间复杂度: O(n)
- 时间复杂度与最内层循环主体的执行次数有关
- 与有多少重循环无关
空间复杂度: O(1)
只需要分配两个指针的额外内存
代码模板
Java代码模板
![v2-d4438fa199616bfa3352102d4b0a0764_b.jpg](https://ss.csdn.net/p?https://pic1.zhimg.com/v2-d4438fa199616bfa3352102d4b0a0764_b.jpg)
Python代码模板
![v2-9d592011e92ab1761558f99b69a8a7c5_b.jpg](https://ss.csdn.net/p?https://pic2.zhimg.com/v2-9d592011e92ab1761558f99b69a8a7c5_b.jpg)
背好模板,在面试中再遇到双指针类似的题就基本不会出错了,其他常考知识点也一样。感兴趣的朋友可以si我