目录
  1. 1. LeetCode刷题笔记(800-899)
    1. 1.1. 【804】唯一摩尔斯密码词
      1. 1.1.1. 解题记录
      2. 1.1.2. 相关标签
    2. 1.2. 【806】写字符串需要的行数
      1. 1.2.1. 解题记录
      2. 1.2.2. 相关标签
    3. 1.3. 【811】子域名访问计数
      1. 1.3.1. 解题记录
      2. 1.3.2. 相关标签
    4. 1.4. 【812】最大三角形面积
      1. 1.4.1. 解题记录
      2. 1.4.2. 相关标签
    5. 1.5. 【819】最常见的单词
      1. 1.5.1. 解题记录
      2. 1.5.2. 相关标签
    6. 1.6. 【824】山羊拉丁文
      1. 1.6.1. 解题记录
      2. 1.6.2. 相关标签
    7. 1.7. 【830】较大分组的位置
      1. 1.7.1. 解题记录
      2. 1.7.2. 相关标签
    8. 1.8. 【832】翻转图像
      1. 1.8.1. 解题记录
      2. 1.8.2. 相关标签
    9. 1.9. 【836】矩形重叠
      1. 1.9.1. 解题记录
      2. 1.9.2. 相关标签
    10. 1.10. 【840】矩阵中的幻方
      1. 1.10.1. 解题记录
      2. 1.10.2. 相关标签
    11. 1.11. 【844】比较含退格的字符串
      1. 1.11.1. 解题记录
      2. 1.11.2. 相关标签
    12. 1.12. 【849】到最近的人的最大距离
      1. 1.12.1. 解题记录
      2. 1.12.2. 相关标签
    13. 1.13. 【852】山脉数组的峰顶索引
      1. 1.13.1. 解题记录
      2. 1.13.2. 相关标签
    14. 1.14. 【859】亲密字符串
      1. 1.14.1. 解题记录
      2. 1.14.2. 相关标签
    15. 1.15. 【860】柠檬水找零
      1. 1.15.1. 解题记录
      2. 1.15.2. 相关标签
    16. 1.16. 【867】转置矩阵
      1. 1.16.1. 解题记录
      2. 1.16.2. 相关标签
LeetCode刷题笔记(800-899)

LeetCode刷题笔记(800-899)

【804】唯一摩尔斯密码词

解题记录

用数组保存摩尔斯密码,通过ASCII码取到对应的摩尔斯密码,计算出单词的摩尔斯密码后保存到哈希表,最后返回哈希表中键值对的个数即为所求。

相关标签

字符串

【806】写字符串需要的行数

解题记录

使用一个变量记录行数,一个变量记录宽度,读取到字符通过ASCII码取到对应的宽度,如果当前宽度加上当前字符的宽度不超过100就继续加,超过了就另起一行,很简单的逻辑。

相关标签

数组

【811】子域名访问计数

解题记录

遍历给定的域名,首先将访问次数与域名分离开,再将域名以英文句号为标志,分割为子域名,从子域名中取出子域名,与次数一起作为键值对保存到哈希表,不断取出新的子域名,拼接得到更长的子域名。以 100 www.baidu.com 为例,分割后得到 [www, baidu. com] 这个子域名数组和100这个次数,首先取出 com ,将 com: 100 作为键值对保存,然后取出 baidu ,拼接得到 baidu.com ,将 baidu.com: 100 作为键值对保存,以此类推。当每一个域名都处理完毕后,再遍历哈希表中的键值对,按照题目的格式进行输出即可。

相关标签

哈希表

【812】最大三角形面积

解题记录

这题想了半天想不出来,看了题解挺失望的,最优的方案竟然就是暴力循环,既然没有什么巧妙的题解,为什么还要将这题放到题库里呢?暴力方式很简单,从点集中遍历任意三个点的所有可能组合,根据三个点的坐标计算三角形面积,最后返回最大值即可。

相关标签

数学

【819】最常见的单词

解题记录

首先遍历字符串,将字符串中的每个单词保存到哈希表中,得到单词出现的次数。然后遍历哈希表,找到最大的不在禁用单词列表中的单词。

相关标签

字符串

【824】山羊拉丁文

解题记录

分割字符串得到每个单词,根据单词的位置以及开头字母进行相应的处理然后存入结果中即可。

相关标签

字符串

【830】较大分组的位置

解题记录

双指针遍历字符串,双指针指向相同字符时一个指针向后移动,得到每一段相同字符的长度,如果长度不小于3,将双指针作为边界位置添加到结果数组中,注意双指针的边界条件即可。

相关标签

数组

【832】翻转图像

解题记录

要完成两个操作,反转数组和0-1互换,两个操作其实可以在一次遍历中完成,遍历的时候原数组从后往前遍历,将遍历元素0-1反转后添加到结果中即可。

相关标签

数组

【836】矩形重叠

解题记录

一开始没想明白,写了很复杂的判断语句也有遗漏的情况,另两个矩形分别叫a、b,两个矩形不重叠其实只需要满足:

a的最左侧比b的最右侧还要靠右
a的最右侧比b的最左侧还要靠左
a的底部比b的顶部还靠上
a的顶部比b的底部还靠下

四个条件满足任意一个即可,通过每个矩形左下角和右上角的坐标很容易就能判断。

相关标签

数学

【840】矩阵中的幻方

解题记录

又是一个只能暴力循环求解的题目,遍历矩阵中每一个点,判断以该点为左上角的3X3矩阵是否是幻方,判断幻方首先判断矩阵中是否出现了1-9以外的元素,出现就一票否决,然后判断矩阵中是否有9个元素,不是的话也一票否决,然后开始正式判断,先计算第一行之和,作为标准和,然后计算剩余的每一行和每一列和对角线,与标准和进行比较,判断是否满足每一行每一列与两条对角线都相等的条件,不满足也一票否决,最后没有被否决的结果可以作为一个幻方,计数器自增。这题更简洁的做法是将3阶幻方的8种可能保存到集合中,这样只需要将每个矩阵进行判断是否在集合中即可。

相关标签

数组

【844】比较含退格的字符串

解题记录

这题我使用了栈,如果读取到退格符号就弹出栈顶元素,否则将读取到的元素压入栈,最后栈中剩下的就是字符串结果,然后比较两个字符串即可。如果要实现常数级的空间复杂度,需要从后向前扫描字符串,扫描到退格符号就将符号前的第一个不是退格字符的字符删除,最后剩下的也是字符串结果。

相关标签

栈、双指针

【849】到最近的人的最大距离

解题记录

每次找到新的座位,就将新的座位与上一个座位的位置进行比较,找到两个座位最中间的座位,就是当前两个座位可以找到的最大距离空座位。

相关标签

数组

【852】山脉数组的峰顶索引

解题记录

这题在二分查找的基础上略微进行修改,常规的二分查找命中条件是中位下标对应的数就是要找的数,这题命中条件是中位下标对应的数左右两侧均比它小。

相关标签

二分查找

【859】亲密字符串

解题记录

对于一组亲密字符串,有两种可能,一种是两个字符串完全相等,通过交换两个相同的字符实现题意,另一种就是字符串中有且只有两个地方不一样。对于两种情况分别处理,第一种情况对字符串进行计数,检查是否有某一个字符出现2次以上,出现2次以上意味着可以交换该字符。对于第二种情况,使用双指针指向两个字符串的起点,遍历字符串,第一次发现两个字符不一样时,记录下此时的两个字符,如果再出现两个字符不一样,判断两个字符与第一次记录的两个字符是否满足逆序关系,如果不是就可以直接返回false。每次出现不一样的字符时维护一个计数器,最后观察计数器是否为2即可得到答案。

相关标签

字符串

【860】柠檬水找零

解题记录

由于题目限定了只会收到5、10、20三种面值的钱,所以对于这三种面值分别处理即可。对于5,不需要找钱,只需要将持有的5块钱的数量加一即可;对于10,如果没有持有5块钱,就无法找零,返回false,否则可以找零,持有的10块加一,5块减一;对于15比较复杂,找零要么为3张5元,要么为1张5元1张10元,要分别判断受伤的纸币是否满足这些条件。这题如果纸币面值更多样就不能用分类讨论的思想解题了。

相关标签

贪心算法

【867】转置矩阵

解题记录

这题很简单,遍历每一个数组中的元素,将其映射到行、列坐标互换的位置即可。

相关标签

数组

文章作者: Rylaris
文章链接: http://wenchanyuan.com/2020/05/23/LeetCode刷题笔记(800-899)/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Rylaris的个人技术博客
打赏
  • WeChat Pay
  • Alipay