1.数组和字符串
“题目怎么说,你就怎么做”,这类题目一般不涉及高深的算法,着重考查的是代码能力和思维。
当然,有时候题目描述会特别长,就是用来恶心你的;有时候也会由于思路的不同导致代码量的天差地别。
LeetCode 167. 两数之和 II - 输入有序数组:题解
LeetCode 4. 寻找两个正序数组的中位数:题解
LeetCode 3. 无重复字符的最长子串:题解
LeetCode 8. 字符串转换整数 (atoi):题解
LeetCode 13. 罗马数字转整数:
LeetCode 12. 整数转罗马数字:
LeetCode 481. 神奇字符串:
LeetCode 71. 简化路径:
LeetCode 12. 整数转罗马数字:
LeetCode 68. 文本左右对齐:
LeetCode 38. 外观数列:
LeetCode 49. 字母异位词分组:
LeetCode 151. 翻转字符串里的单词:
LeetCode 165. 比较版本号:
LeetCode 273. 整数转换英文表示:
LeetCode 166. 分数到小数:
LeetCode 131. 分割回文串:
LeetCode 227. 基本计算器 II:
LeetCode 30. 串联所有单词的子串:
LeetCode 214. 最短回文串:
LeetCode 929. 独特的电子邮件地址:
LeetCode 208. 实现 Trie (前缀树):
2.位运算
二进制的应用十分灵活,是后面状态压缩和一些巧妙解法的基础。
LeetCode 260. 只出现一次的数字 III:题解
LeetCode 137. 只出现一次的数字 II:题解
LeetCode 762. 二进制表示中质数个计算置位:题解
3.链表
链表的代码实现本身就颇有挑战,而且一些精妙的解法很难想出来。
解决链表问题最好的办法是在脑中或者纸上把链表画出来。
基础:
LeetCode 83. 删除排序链表中的重复元素:题解
LeetCode 19. 删除链表的倒数第N个节点:题解
进阶:
LeetCode 82. 删除排序链表中的重复元素 II:题解
LeetCode 138. 复制带随机指针的链表:题解
LeetCode 24. 两两交换链表中的节点:题解
4.递归/回溯/DFS/剪枝
看山是山,看水是水;
看山不是山,看水不是水;
看山还是山,看水还是水。
基础:
剑指Offer 06. 从尾到头打印链表:
进阶:
LeetCode 93. 复原IP地址:
LeetCode 394. 字符串解码:
LeetCode 341. 扁平化嵌套列表迭代器:
LeetCode 756. 金字塔转换矩阵:
LeetCode 464. 我能赢吗:
LeetCode 282. 给表达式添加运算符:
LeetCode 301. 删除无效的括号:
5.BFS
宽搜不管思路还是代码实现都很简单,LeetCode上这类题目很少。
LeetCode 103. 二叉树的锯齿形层次遍历:
LeetCode 130. 被围绕的区域:
LeetCode 695. 岛屿的最大面积:
LeetCode 127. 单词接龙:
LeetCode 542. 01 矩阵:
6.树
二叉树天生就适合递归(递归不会的滚回上面T^T),树作为常用的数据结构考察频率很高。
LeetCode 102. 二叉树的层序遍历:
LeetCode 105. 从前序与中序遍历序列构造二叉树:
LeetCode 106. 从中序与后序遍历序列构造二叉树:
LeetCode 101. 对称二叉树:
LeetCode 104. 二叉树的最大深度:
LeetCode 111. 二叉树的最小深度:
LeetCode 173. 二叉搜索树迭代器:
LeetCode 297. 二叉树的序列化与反序列化:
LeetCode 331. 验证二叉树的前序序列化:
LeetCode 653. 两数之和 IV - 输入 BST:
LeetCode 236. 二叉树的最近公共祖先:
LeetCode 543. 二叉树的直径:
LeetCode 124. 二叉树中的最大路径和:
LeetCode 87. 扰乱字符串:
LeetCode 117. 填充每个节点的下一个右侧节点指针 II:
LeetCode 99. 恢复二叉搜索树:
LeetCode 337. 打家劫舍 III:
LeetCode 95. 不同的二叉搜索树 II:
LeetCode 108. 将有序数组转换为二叉搜索树:
LeetCode 109. 有序链表转换二叉搜索树:
7.动态规划
别看了,动态规划你是学不会哒,就是玄学嘛,搞个屁!
LeetCode 53. Maximum Subarray
LeetCode 300. Longest Increasing Subsequence
LeetCode 72. Edit Distance
LeetCode 121. Best Time to Buy and Sell Stock
LeetCode 122. Best Time to Buy and Sell Stock II
LeetCode 123. Best Time to Buy and Sell Stock III
LeetCode 188. Best Time to Buy and Sell Stock IV
LeetCode 309. Best Time to Buy and Sell Stock with Cooldown
LeetCode 198. House Robber
LeetCode 213. House Robber II
LeetCode 312. Burst Balloons
LeetCode 96. Unique Binary Search Trees
LeetCode 140. Word Break II
LeetCode 10. Regular Expression Matching
LeetCode 120. Triangle
LeetCode 63. Unique Paths II
LeetCode 354. Russian Doll Envelopes
LeetCode 338. Counting Bits
LeetCode 329. Longest Increasing Path in a Matrix
LeetCode 322. Coin Change
LeetCode 221. Maximal Square
LeetCode 576. Out of Boundary Paths
LeetCode 91. Decode Ways
LeetCode 264. Ugly Number II
LeetCode 115. Distinct Subsequences
LeetCode 132. Palindrome Partitioning II
LeetCode 526. Beautiful Arrangement
LeetCode 486. Predict the Winner
至此,递归/回溯/DFS和动态规划两大难点搞完了,剩下的就是一下小而精的算法和数据结构,比如二分、单调栈、单调队列(滑动窗口)、栈、队列、哈希、图论(很少)、贪心、数学、设计等,有空再选题分类叭!
8.二分
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置:题解
LeetCode 153. 寻找旋转排序数组中的最小值:题解
9.单调队列/栈
LeetCode 155. Min Stack
LeetCode 496. Next Greater Element I
LeetCode 42. Trapping Rain Water
LeetCode 84. Largest Rectangle in Histogram
LeetCode 475. Heaters
LeetCode 4. Median of Two Sorted Arrays
LeetCode 239. Sliding Window Maximum
LeetCode 456. 132 Pattern
10.哈希表
基础:
LeetCode 217. 存在重复元素:
LeetCode 219. 存在重复元素 II:
LeetCode 350. 两个数组的交集 II:题解
进阶:
LeetCode 220. 存在重复元素 III:
LeetCode 652. Find Duplicate Subtrees:
LeetCode 290. Word Pattern:
LeetCode 554. Brick Wall:
LeetCode 149. Max Points on a Line:
LeetCode 355. Design Twitter:
LeetCode 128. Longest Consecutive Sequence:
11.贪心
LeetCode 860. Lemonade Change
LeetCode 392. Is Subsequence
LeetCode 455. Assign Cookies
LeetCode 55. Jump Game
LeetCode 45. Jump Game II
LeetCode 376. Wiggle Subsequence
LeetCode 406. Queue Reconstruction by Height
LeetCode 452. Minimum Number of Arrows to Burst Balloons
LeetCode 402. Remove K Digits
LeetCode 134. Gas Station
12.数学
LeetCode 62. Unique Paths
LeetCode 462. Minimum Moves to Equal Array Elements II
LeetCode 458. Poor Pigs
LeetCode 319. Bulb Switcher
LeetCode 343. Integer Break
LeetCode 650. 2 Keys Keyboard
LeetCode 223. Rectangle Area
LeetCode 829. Consecutive Numbers Sum
LeetCode 891. Sum of Subsequence Widths
LeetCode 463. 岛屿的周长:
图
LeetCode 207. 课程表
LeetCode 210. 课程表 II
前缀和
Trie字典树
13.Google面试题
LeetCode 14. Longest Common Prefix
LeetCode 20. Valid Parentheses
LeetCode 43. Multiply Strings
LeetCode 48. Rotate Image
LeetCode 31. Next Permutation
LeetCode 23. Merge k Sorted Lists
LeetCode 33. Search in Rotated Sorted Array
LeetCode 11. Container With Most Water
LeetCode 41. First Missing Positive
LeetCode 25. Reverse Nodes in k-Group
LeetCode 66. Plus One
LeetCode 326. Power of Three
LeetCode 883. Projection Area of 3D Shapes
LeetCode 230. Kth Smallest Element in a BST
LeetCode 139. Word Break
LeetCode 930. Binary Subarrays With Sum
LeetCode 228. Summary Ranges
LeetCode 57. Insert Interval
LeetCode 224. Basic Calculator
LeetCode 857. Minimum Cost to Hire K Workers
14.Facebook面试题
LeetCode 125. Valid Palindrome
LeetCode 88. Merge Sorted Array
LeetCode 278. First Bad Version
LeetCode 98. Validate Binary Search Tree
LeetCode 173. Binary Search Tree Iterator
LeetCode 238. Product of Array Except Self
LeetCode 56. Merge Intervals
LeetCode 75. Sort Colors
LeetCode 133. Clone Graph
LeetCode 76. Minimum Window Substring