春招已经开始了。 你是否是已经开始准备了呢?为了帮助你们得到更好的 offer,lucifer 开辟了春招冲冲冲栏目。git
今天咱们的猎物是钉钉和腾讯。来看看这两家的算法题难度几何吧!github
<!-- more -->面试
视频地址:https://www.bilibili.com/vide...算法
一次遍历便可,惟一须要注意的是补全再比较(逻辑补全便可,并不必定须要物理上真的去补全),时间复杂度 $O(m + n)$,其中 m 和 n 分别为两个版本号的长度数组
随机生成一个长度为 8 的字符并将其存到哈希表中,下次生成后判断是否已经在哈希表中了。若是存在,说明以前生成过了,继续生成。注意这种算法存在一直拒绝的可能,代码会无限循环。缓存
维护一个窗口,当窗口内有数据才触发请求批量上传,一个窗口的长度为 100m(可能大于) 内的全部请求微信
头尾双指针,不断交换两个指针的字符便可。ide
快慢双指针典型题目。优化
典型的二分题目,不会的建议看下个人二分讲义。个人刷题仓库或者公众号搜 二分 就行。设计
稍微有点难度了,这个题很常见,难度不小,建议刷。我以前写过题解了,直接甩给你们吧 146. LRU 缓存机制
我给了 JS, Go, PHP, Python3 四种语言,有你的菜么?
没啥难度,直接模拟。
链表和数组本质没有不一样,只是具体操做不同。所以掌握链表基本操做就好了。链表基本操做有哪些?须要注意什么?个人链表专题都给你们总结好了,建议阅读。
题目是:给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。请你返回乘积为正数的最长子数组长度。
这道题是求连续的乘积为正数的最长子数组长度。这里须要一个小学知识,两个符号相同的相乘为正数,两个符号不一样的数相乘为负数(先不考虑 0)。 因而直接使用一维 DP + 一层循环便可。
定义状态 positive[i] 为 nums[i] 结尾的乘积为正数的最长子数组长度,negative[i] 为 nums[i] 结尾的乘积为负数的最长子数组长度,因而答案就是 max(positive)。
接下来,遍历 nums,对 nums[i] 的不一样取值分类讨论便可:
$$ positive[i]=positive[i−1]+1 $$
$$ negative[i]=\left\{ \begin{aligned} negative[i-1] + 1 & & negative[i-1] > 0 \\ 0 & & negative[i-1] = 0 \\ \end{aligned} \right. $$
$$ negative[i]=positive[i−1]+1 $$
$$ positive[i]=\left\{ \begin{aligned} negative[i-1] + 1 & & negative[i-1] > 0 \\ 0 & & negative[i-1] = 0 \\ \end{aligned} \right. $$
$$ negative[i]=positive[i] = 0 $$
状态定义通常两种套路:
两种方式思路同样,只是实操不同而已。我我的倾向于第二种。好比股票题,我就喜欢定义一个 buy 和 一个 sell 数组。再好比摆动数组,我就喜欢定义一个 up 和 一个 down 数组。
另外若是题目没有限定连续,则须要两层循环和一维 DP(滚动数组优化)。
我我的以为算法题难度是中等,都很是常规,没有什么难以读懂的题目或者冷门知识。
另外我组建了春招群,你们面试遇到不会的题均可以问哦。想进群的可在公众号力扣加加后台回复春招获取小秘书的微信,经过以后再次回复春招入群。
最后祝你们 offer 多多。