不管是春招还是秋招,校招生是避免不了刷题操作的,今天我总结了一下自己秋招过程对leetcode题目进行分类并针对性练习的过程。
一些基本的数据结构练习,建议结合大话数据结构这本书食用。里面有一部分语言特性,注意总结与分析,有助于加深数据结构基础的理解。
基本数据结构总结
推荐题目:
- LeetCode 1. Two Sum
- LeetCode 187. Repeated DNA Sequences
- LeetCode 706. Design HashMap
- LeetCode 652. Find Duplicate Subtrees
- LeetCode 560. Subarray Sum Equals K
- LeetCode 547. Friend Circles
- LeetCode 684. Redundant Connection
- LeetCode 692. Top K Frequent Words
- LeetCode 295. Find Median from Data Stream
- LeetCode 352. Data Stream as Disjoint Intervals
二分查找一般是在单调有序的数组上操作,而实际的变体却是很灵活的。例如lc287题就是一种经典的应用,关于二分内容,推荐下面几道题目,扣好边界是关键。
二分专题
- Leetcode 69. sqrt x
- Leetcode 35. Search insert position
- LeetCode 34. Find First and Last Position of Element in Sorted Array
- LeetCode 74. Search a 2D Matrix
- LeetCode 153. Find Minimum in Rotated Sorted Array
- LeetCode 33. Search in Rotated Sorted Array
- LeetCode 278. First Bad Version
- LeetCode 162. Find Peak Element
- LeetCode 287. Find the Duplicate Number
- LeetCode 275. H-Index II
关于链表,考点居多,但是常考的题目固定,校招过程中,遇到的更多的是逆置等问题,这里总结了几道题目,个人建议将链表排序这部分着重复习,例如链表快排,链表插排,链表归并排,都考过,尤其是字节的面试官,非常喜欢考链表的题目,这部分题目,扣好细节即可。
链表专题
推荐题目:
- LeetCode 19. Remove Nth Node From End of List
- LeetCode 237. Delete Node in a Linked List
- LeetCode 83. Remove Duplicates from Sorted List
- LeetCode 61. Rotate List
- LeetCode 24. Swap Nodes in Pairs
- LeetCode 206. Reverse Linked List
- LeetCode 92. Reverse Linked List II
- LeetCode 160. Intersection of Two Linked Lists
- LeetCode 142. Linked List Cycle II
- LeetCode 148. Sort List
树与二叉树同样是字节面试官喜欢考的内容,因为这一部分内容能够很好的验证面试者对递归操作得理解与掌握。内容以二叉树居多,二叉树的几种遍历方法需要烂熟于心(非递归版本)
树专题
推荐题目:
- LeetCode 98. Validate Binary Search Tree
- LeetCode 101. Symmetric Tree
- LeetCode 94. Binary Tree Inorder Traversal
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode 102. Binary Tree Level Order Traversal
- LeetCode 236. Lowest Common Ancestor of a Binary Tree
- LeetCode 297. Serialize and Deserialize Binary Tree
- LeetCode 543. Diameter of Binary Tree
- LeetCode 124. Binary Tree Maximum Path Sum
- LeetCode 173. Binary Search Tree Iterator
字符串处理是常见题目,这部分不多说,主要空格和逗号,属于一些常规题目,简单推荐几道,可以包含几种常见的类型了
字符串处理
推荐题目:
- LeetCode 38. Count and Say
- LeetCode 49. Group Anagrams
- LeetCode 151. Reverse Words in a String
- LeetCode 165. Compare Version Numbers
- LeetCode 929. Unique Email Addresses
- LeetCode 5. Longest Palindromic Substring
- LeetCode 6. ZigZag Conversion
- LeetCode 3. Longest Substring Without Repeating Characters
- LeetCode 208. Implement Trie (Prefix Tree)
- LeetCode 273. Integer to English Words
从这开始,进入虐心模式,这部分题目我刷了整整两天,刷的清爽的不得了。主要是深度优先搜索与回溯,这部分时间复杂度较大,经常难以找到合适的思路。
回溯法与深度优先搜索
推荐题目:
- LeetCode 17. Letter Combinations of a Phone Number
- LeetCode 79. Word Search
- LeetCode 46. Permutations
- LeetCode 47. Permutations II
- LeetCode 78. Subsets
- LeetCode 90. Subsets II
- LeetCode 216. Combination Sum III
- LeetCode 52. N-Queens II
- LeetCode 37. Sudoku Solver
- LeetCode 473. Matchsticks to Square
这部分题目涉及到一些较为复杂的数据结构,
滑动窗口、双指针与单调队列/栈
推荐题目:
- LeetCode 167. Two Sum II - Input array is sorted
- LeetCode 88. Merge Sorted Array
- LeetCode 26. Remove Duplicates from Sorted Array
- LeetCode 76. Minimum Window Substring
- LeetCode 32. Longest Valid Parentheses
- LeetCode 155. Min Stack
- LeetCode 42. Trapping Rain Water
- LeetCode 84. Largest Rectangle in Histogram
- LeetCode 239. Sliding Window Maximum
- LeetCode 918. Maximum Sum Circular Subarray
对于我来说,最难的部分,但是学会之后就会很舒服。DP日渐成为各大公司面试的必考点。通过DP可以有效的减少时间复杂度与重复计算。
动态规划
推荐题目:
- LeetCode 53. Maximum Subarray
- LeetCode 120. Triangle
- LeetCode 63. Unique Paths II
- LeetCode 91. Decode Ways
- LeetCode 198. House Robber
- LeetCode 300. Longest Increasing Subsequence
- LeetCode 72. Edit Distance
- LeetCode 518. Coin Change 2
- LeetCode 664. Strange Printer
- LeetCode 10. Regular Expression Matching
以上,是我刷的部分leetcode题目,偶尔还会打打周赛。另外,剑指offer是必刷的。个人比较推荐牛客网的剑指offer题目。最后,祝各位同学面试顺利,拿到满意的offer
二分查找
滑动窗口
数组
链表
二叉树
TopK
设计题
动态规划
其他
系列题
X数之和系列:
股票系列:
这系列还有4,有余力的同学可以做做
括号系列:
注意解法上的优化,这系列要搞定最优解
各公司常考题补充
下方列表,展示的是除了上面提到的题目以外,各自还常考的题目。