Java研发岗必背算法82道
一、写在前面
二、必会
快速排序、归并排序、堆排序最好会写。卡⼀下都不⾏,没事就写着玩看最快多久能写完 ⼆叉树的前中后序、层序遍历、Z字遍历。迭代法写,递归⼀共那⼏⾏谁不会啊 反转链表。各种反,直接反,反⼀段,K个⼀组全反,K个⼀组不够K个不反 接⾬⽔!!!单调栈 股票买卖! 机器⼈寻路!!动态规划! 回溯法也很容易考,这是⼀种思想经常与树和其他结合 字符串的题最多变,有双指针滑动窗⼝还有动态规划还有其他很烦 LRU必须⾄少独⽴写出来10次bugfree,LFU这个⾄少5次吧
三、Hard难度15道
刷这些就⾏,Hard不要刻意追求,真被考到范围外的概率极其⼩,估计⾯试官⼼情很不好==!
43. ⼆叉树中的最⼤路径和 44. 编辑距离 45. 寻找两个正序数组的中位数 46. 最⼩覆盖⼦串 47. 滑动窗⼝最⼤值 48. 缺失的第⼀个正数 49. 最⻓有效括号 50. ⼆叉树的序列化与反序列 51. LFU缓存 剑指 Offer 51. 数组中的逆序对 52. 基本计算器 53. 分发糖果
四、Medium难度67道
中等难度必须要掌握
15. 三数之和 102. ⼆叉树的层序遍历 103. ⼆叉树的锯⻮形层次遍历 236. ⼆叉树的最近公共祖先 33. 搜索旋转排序数组 5. 最⻓回⽂⼦串 200. 岛屿数量 46. 全排列 92. 反转链表 II 142. 环形链表 II 54. 螺旋矩阵 300. 最⻓上升⼦序列 143. 重排链表 199. ⼆叉树的右视图 56. 合并区间 19. 删除链表的倒数第N个节点 82. 删除排序链表中的重复元素 II 8. 字符串转换整数 (atoi) 148. 排序链表 2. 两数相加 151. 翻转字符串⾥的单词 93. 复原IP地址 105. 从前序与中序遍历序列构造⼆叉树 31. 下⼀个排列 1143. 最⻓公共⼦序列 22. 括号⽣成 129. 求根到叶⼦节点数字之和 113. 路径总和 II 98. 验证⼆叉搜索树 43. 字符串相乘 78. ⼦集 470. ⽤ Rand7() 实现 Rand10() 322. 零钱兑换 64. 最⼩路径和 718. 最⻓重复⼦数组 48. 旋转图像 165. ⽐较版本号 39. 组合总和 34. 在排序数组中查找元素的第⼀个和最后⼀个位置 153. 寻找旋转排序数组中的最⼩值 62. 不同路径 128. 最⻓连续序列 221. 最⼤正⽅形 240. 搜索⼆维矩阵 II 24. 两两交换链表中的节点 695. 岛屿的最⼤⾯积 198. 打家劫舍 498. 对⻆线遍历 662. ⼆叉树最⼤宽度 79. 单词搜索 145. ⼆叉树的后序遍历 402. 移掉K位数字 59. 螺旋矩阵 II 230. ⼆叉搜索树中第K⼩的元素 328. 奇偶链表 61. 旋转链表 50. Pow(x, n) 47. 全排列 II 450. 删除⼆叉搜索树中的节点 74. 搜索⼆维矩阵 189. 旋转数组 40. 组合总和 II 11. 盛最多⽔的容器 114. ⼆叉树展开为链表