面试150(非HOT100重叠部分)P1
Part1:字符串/数组(注重StringBuilder的使用):
1.合并两个数组:倒序插入排序
2.删除有序数组重复项 I / II : 指针计数
3.股票利润II : 局部贪心累加所有上升坡段
4.H指数:计数排序(桶排序),倒着遍历
5.O(1) 时间插入、删除和获取随机元素:HashMap + ArrayList,删除就用尾节点与被删节点交换再删尾节点
6.加油站:贪心 总油量不能亏损 找局部亏损最低点
7.分糖果:两次贪心 进阶:常数空间解法:上升段 平坡 下降段
8.罗马数字转整数:比较相邻两罗马数字,左 > 右 +当前罗马数字数值 否则 减 当前罗马数字数值
9.整数转罗马数字:排列所有可能罗马数字从大到小,遍历数值,减去罗马数字数值去拼接
10.最长公共前缀:以第一个字符为基准,去纵向扫描其他字符串的列开始比较
11.反转字符串的单词:去除字符串首位和单词间多余空格(仅保留一个)-> 反转字符串 -> 反转每个单词
12.Z字型变换:用StringBuilder对象作为桶来存储该存储的字符,用一个标志变量flag判断向下/向上走(第一行/最后一行)
13.找出字符串中第一个匹配项的下标(haystack, needle):needle 是一个固定长度的窗口,在 haystack 上从左向右滑动,设 haystack 长度为 n,needle 长度为 m。我们只需要在 haystack 中遍历到索引 n - m,去匹配。 进阶:KMP算法(next数组)
14.文本左右对齐!!!(难度巅峰):核心是空格的分配:
情况 1:当前行只有一个单词-单词左对齐,末尾补齐空格
情况 2:当前行是最后一行-所有单词左对齐,单词间只留 1 个空格,行末补齐空格
情况 3:普通行-计算总空格数:maxWidth - 当前行单词总字符数。
均匀分配:空格数 / (单词数 - 1) 是基础空格数。
左侧多分配:空格数 % (单词数 - 1) 是需要额外多加 1 个空格的间隔数。
#算法题##手撕代码##力扣刷题#
1.合并两个数组:倒序插入排序
2.删除有序数组重复项 I / II : 指针计数
3.股票利润II : 局部贪心累加所有上升坡段
4.H指数:计数排序(桶排序),倒着遍历
5.O(1) 时间插入、删除和获取随机元素:HashMap + ArrayList,删除就用尾节点与被删节点交换再删尾节点
6.加油站:贪心 总油量不能亏损 找局部亏损最低点
7.分糖果:两次贪心 进阶:常数空间解法:上升段 平坡 下降段
8.罗马数字转整数:比较相邻两罗马数字,左 > 右 +当前罗马数字数值 否则 减 当前罗马数字数值
9.整数转罗马数字:排列所有可能罗马数字从大到小,遍历数值,减去罗马数字数值去拼接
10.最长公共前缀:以第一个字符为基准,去纵向扫描其他字符串的列开始比较
11.反转字符串的单词:去除字符串首位和单词间多余空格(仅保留一个)-> 反转字符串 -> 反转每个单词
12.Z字型变换:用StringBuilder对象作为桶来存储该存储的字符,用一个标志变量flag判断向下/向上走(第一行/最后一行)
13.找出字符串中第一个匹配项的下标(haystack, needle):needle 是一个固定长度的窗口,在 haystack 上从左向右滑动,设 haystack 长度为 n,needle 长度为 m。我们只需要在 haystack 中遍历到索引 n - m,去匹配。 进阶:KMP算法(next数组)
14.文本左右对齐!!!(难度巅峰):核心是空格的分配:
情况 1:当前行只有一个单词-单词左对齐,末尾补齐空格
情况 2:当前行是最后一行-所有单词左对齐,单词间只留 1 个空格,行末补齐空格
情况 3:普通行-计算总空格数:maxWidth - 当前行单词总字符数。
均匀分配:空格数 / (单词数 - 1) 是基础空格数。
左侧多分配:空格数 % (单词数 - 1) 是需要额外多加 1 个空格的间隔数。
#算法题##手撕代码##力扣刷题#
全部评论
相关推荐
点赞 评论 收藏
分享

查看9道真题和解析