很多简单与中等难度题是套路题,读者在初次接触的时候感到棘手很正常,不必灰心!
345. 反转字符串中的元音字母及个人题解
674. 最长连续递增序列及个人题解
42. 接雨水及个人题解
最简单的思路是对符合条件的元素计数,然后放入指定位置,但循环不变量的思路很值得学习。
27. 移除元素及个人题解
283. 移动零及个人题解
26. 删除有序数组中的重复项及个人题解
80. 删除有序数组中的重复项 II及个人题解
严格来说,循环的地方都涉及到循环不变量。然而在循环不变量显而易见的场景中,我们不会强调这个名词,所以本小节的循环不变量特指那些稍有难度的。
167. 两数之和 II - 输入有序数组及个人题解
15. 三数之和及个人题解
1099. 小于 K 的两数之和(会员题)及个人题解
16. 最接近的三数之和及个人题解
18. 四数之和及个人题解
11. 盛最多水的容器及个人题解
795. 区间子数组个数及个人题解
581. 最短无序连续子数组及个人题解
881. 救生艇及个人题解
1793. 好子数组的最大分数及个人题解
160 相交链表及个人题解
141. 环形链表及个人题解
19. 删除链表的倒数第 N 个结点及个人题解
2095. 删除链表的中间节点及个人题解
143. 重排链表及个人题解
202. 快乐数及个人题解
142. 环形链表 ||及个人题解
287. 寻找重复数及个人题解
一些很简单的问题。比如比对两个数组或者模拟。我认为这是很最基础的知识,在学习语言的时候就该练习了。
滑动窗口。这在广义上也属于双指针,但其变形较多,Leetcode 将其独立出来,可参考灵茶山艾府给的滑动窗口题单。
双指针与高级知识结合的题。双指针滑动是基础知识,有时仅作为困难题中的一个工具。对于这种难题,个人认为应在学习高级知识的时候练习,不在本题单之内。
void native(int[] nums): Int
int ans = 0;
int n = nums.length;
for (int l = 0; l < n; l++) {
for(int r = l; r < n; r++){
if l 和 r 的相关信息更符合条件
更新 ans
}
}
return ans但能明显看出时间复杂度 。虽然这在实际开发中可能是最优解法,但面试本着区分候选人的原则,会围绕可以降低时间复杂度的技巧来出题。
这类题的实现方式一般不唯一,重要的是能理清过程和处理好边界条件。可以画图辅助,但最好能直接脑补出动画。在题目做多后,即使面对一些非常规题,也可能自然想到一些更省力的处理过程。
以下皆为个人所著,兼顾了职场面试和本硕阶段的学术考试。
点赞关注不迷路。祝君早日上岸,飞黄腾达!
也欢迎分享你的阅读感受,以便我日后改进。