兄弟们来新专题了奥
之前那个题表刷起来种很奇怪的感觉,感觉有些题面试根本不会考
改了下方式,LeetCode 按种类String,难度 中等,出现频率倒序排列,刷前五十题。
后面也会按照这种方式刷题,再刷下剑指 Offer 的中等,独立刷下高频题,做题部分应该就是可以了。
题号 | 我的解法 | 官方解法 | |
---|---|---|---|
5. 最长回文子串 | dp, 中心扩展 | ||
3. 无重复字符的最长子串 | 滑动窗口 | ||
22. 括号生成 | 暴力递归 | ||
1190. 反转每对括号间的子串 | 模拟,遇到(时,找到最近的), 翻转 | ||
剑指 Offer 38 | dfs | ||
179. 最大数 | 字典序排序 & {return x + y > y + x;} | ||
93. 复原 IP 地址 | 长度剪枝,n个位置插三个点,验证合法性 | ||
394. 字符串解码 | 模拟,和1190比较像,将[adfasdf 加入到最终答案,当遇到]时,找到最近的[, 回滚答案 | ||
43. 字符串相乘 | 字符串乘法,核心:C[i + j] += A[i] * B[j]; | ||
6. Z 字形变换 | 创建个n*m的矩阵,按照题意填,然后再按行遍历 | 直接创建vector<string>, 只要每次推之前指定好列即可 | |
1143. 最长公共子序列 | dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) | ||
12. 整数转罗马数字 | 模拟,可以预处理好所有的结果,然后map映射 | ||
剑指 Offer 46. 把数字翻译成字符串 | 裸dp,同91,解码方法 | ||
139. 单词拆分 | 递归(最后一个case超时),dp[i] = dp[i - k] && check(s[i - k]) | ||
剑指 Offer 48. 最长不含重复字符的子字符串 | 同0003 | ||
8. 字符串转换整数 (atoi) | 边界太多,浪费时间 | ||
17. 电话号码的字母组合 | 暴力递归 | ||
131. 分割回文串 | 暴力递归 | ||
剑指 Offer 45. 把数组排成最小的数 | 同179 | ||
91. 解码方法 | 裸dp, 同剑指Offer46 | ||
227. 基本计算器 II | 模拟,类似于 1190 | ||
402. 移掉 K 位数字 | 贪心 + 单调栈 | ||
763. 划分字母区间 | 合并区间 | ||
692. 前K个高频单词 | 小根堆 + map, 小根堆用std::priority_queue | ||
剑指 Offer 20. 表示数值的字符串 | 边界题,略过 | ||
49. 字母异位词分组 | map<string, vector<string>> | ||
567. 字符串的排列 | 滑动窗口 | ||
443. 压缩字符串 | 模拟,不考虑常量空间 | ||
208. 实现 Trie (前缀树) | 字典树 | ||
516. 最长回文子序列 | DP | ||
451. 根据字符出现频率排序 | map + sort | ||
474. 一和零 | 二重背包 dp[i][j][k], i 是第i个子串,j是0容量,k是1容量 | ||
38. 外观数列 | 模拟预处理 | ||
面试题 08.09. 括号 | 同22括号生成 | ||
424. 替换后的最长重复字符 | 滑动窗口 | ||
面试题 10.02. 变位词组 | 同49.字母异位词分组 | ||
647. 回文子串 | 中心扩展 | ||
71. 简化路径 | 同1190,注意细节 | ||
面试题 16.26. 计算器 | 先除空格,再算乘除,最后算加减 | ||
241. 为运算表达式设计优先级 | 分治法 | ||
316. 去除重复字母 | 单调栈 | ||
395. 至少有 K 个重复字符的最长子串 | 二分答案+前缀和 | ||
165. 比较版本号 | 模拟 | ||
981. 基于时间的键值存储 | 题目复杂,略过 | ||
151. 翻转字符串里的单词 | 裸栈 | ||
678. 有效的括号字符串 | *表示可以容忍的错误数,在遍历时,计算下错误数即可 | ||
468. 验证IP地址 | 模拟 | ||
166. 分数到小数 | 细节题,略过 | ||
1418. 点菜展示表 | 题目巨复杂,不知道啥样面试官会出这样的题 | ||
剑指 Offer II 095. 最长公共子序列 | 裸dp |