/LeetCodeThought

懒得要命的自己,是时候改变了,坚持刷题,坚持改变自己吧

Primary LanguageShell

LeetCodeThought

懒得要命的自己,是时候改变了,坚持刷题,坚持改变自己吧

更新记录

Array

简单难度
  • 2020.07.13 1051. 高度检查器

  • 2020.07.14 剑指 Offer 53 - II. 0~n-1中缺失的数字 and 674. 最长连续递增序列 and 26. 删除排序数组中的重复项

  • 2020.07.21 88. 合并两个有序数组 and 1160. 拼写单词

  • 2020.07.22 1491. 去掉最低工资和最高工资后的工资平均值 and 118. 杨辉三角 and 35. 搜索插入位置 and 1299. 将每个元素替换为右侧最大元素

  • 2020.07.23 167. 两数之和 II - 输入有序数组 and 1266. 访问所有点的最小时间 and 1010. 总持续时间可被 60 整除的歌曲

  • 2020.07.24 1351. 统计有序矩阵中的负数

  • 2020.07.25 1089. 复写零

  • 2020.07.27 605. 种花问题 and 1346. 检查整数及其两倍数是否存在 and 643. 子数组最大平均数 I and 1122. 数组的相对排序

  • 2020.07.28 53. 最大子序和 and 1184. 公交站间的距离 and 697. 数组的度

  • 2020.07.29 面试题 17.10. 主要元素 and 1232. 缀点成线 and 999. 可以被一步捕获的棋子数

  • 2020.07.30 914. 卡牌分组 and 66. 加一 and 661. 图片平滑器 and 219. 存在重复元素 II and 1304. 和为零的N个唯一整数 and 169. 多数元素 and 1. 两数之和 and 1385. 两个数组间的距离值

  • 2020.08.03 1128. 等价多米诺骨牌对的数量

  • 2020.08.04 766. 托普利茨矩阵 and 1185. 一周中的第几天 and 867. 转置矩阵

  • 2020.08.05 448. 找到所有数组中消失的数字 and 1295. 统计位数为偶数的数字 and 747. 至少是其他数字两倍的最大数 and 561. 数组拆分 I

  • 2020.08.06 119. 杨辉三角 II and 剑指 Offer 53 - I. 在排序数组中查找数字 I and 1018. 可被 5 整除的二进制前缀 and 1450. 在既定时间做作业的学生人数 and 1343. 大小为 K 且平均值大于等于阈值的子数组数目 and 面试题 16.04. 井字游戏

  • 2020.08.07 剑指 Offer 29. 顺时针打印矩阵 and 1431. 拥有最多糖果的孩子 and 566. 重塑矩阵 and 628. 三个数的最大乘积 and 717. 1比特与2比特字符

  • 2020.08.10 1470. 重新排列数组 and 面试题 01.01. 判定字符是否唯一 and 746. 使用最小花费爬楼梯

  • 2020.08.11 1365. 有多少小于当前数字的数字 and 1337. 方阵中战斗力最弱的 K 行 and 面试题 16.17. 连续数列 and 1480. 一维数组的动态和 and 509. 斐波那契数

  • 2020.08.12 1534. 统计好三元组 and 1260. 二维网格迁移

  • 2020.08.13 849. 到最近的人的最大距离 and 724. 寻找数组的中心索引 and 905. 按奇偶排序数组 and 1200. 最小绝对差

  • 2020.08.14 1013. 将数组分成和相等的三个部分 and 1464. 数组中两元素的最大乘积 and 414. 第三大的数 and 1399. 统计最大组的数目 and 1331. 数组序号转换 and 剑指 Offer 04. 二维数组中的查找 and 217. 存在重复元素 and 485. 最大连续1的个数 and 1313. 解压缩编码列表 and 121. 买卖股票的最佳时机

  • 2020.08.17 面试题 08.03. 魔术索引 and 832. 翻转图像 and 1394. 找出数组中的幸运数

  • 2020.08.18 1002. 查找常用字符

  • 2020.08.20 896. 单调数列 and 189. 旋转数组

  • 2020.08.21 532. 数组中的K-diff数对 and 1512. 好数对的数目 and 1380. 矩阵中的幸运数

  • 2020.08.24 面试题 01.02. 判定是否互为字符重排 and 830. 较大分组的位置 and 1217. 玩筹码 and 941. 有效的山脉数组

  • 2020.08.25 1560. 圆形赛道上经过次数最多的扇区 and 888. 公平的糖果交换 and 1486. 数组异或操作 and 268. 缺失数字

  • 2020.08.26 面试题 16.15. 珠玑妙算

  • 2020.08.27 面试题 10.01. 合并排序的数组

  • 2020.08.31 977. 有序数组的平方 and 1550. 存在连续三个奇数的数组 and 840. 矩阵中的幻方

  • 2020.09.01 1275. 找出井字棋的获胜者 and 1539. 第 k 个缺失的正整数

  • 2020.09.03 922. 按奇偶排序数组 II

  • 2020.09.04 283. 移动零 and 985. 查询后的偶数和 and 17.04. 消失的数字

  • 2020.09.08 989. 数组形式的整数加法 and 1475. 商品折扣后的最终价格 and 剑指 Offer 03. 数组中重复的数字

  • 2020.09.10 1460. 通过翻转子数组使两个数组相等 and 1572. 矩阵对角线元素的和

  • 2020.09.11 1389. 按既定顺序创建目标数组 and 1413. 逐步求和得到正数的最小值 and 1502. 判断能否形成等差数列

  • 2020.09.15 1252. 奇数值单元格的数目

  • 2020.09.16 1582. 二进制矩阵中的特殊位置

  • 2020.09.21 665. 非递减数列

  • 2020.09.22 1170. 比较字符串最小字母出现频次 and 1287. 有序数组中出现次数超过25%的元素

  • 2020.09.25 1588. 所有奇数长度子数组的和

  • 2020.10.13 122. 买卖股票的最佳时机 II

  • 2020.10.16 1566. 重复至少 K 次且长度为 M 的模式

  • 2020.10.21 1608. 特殊数组的特征值 and 1619. 删除某些元素后的数组均值

  • 2020.11.13 1476. 子矩形查询

  • 2020.11.16 1535. 找出数组游戏的赢家

  • 2020.11.25 1552. 两球之间的磁力

  • 2021.06.03 228. 汇总区间

  • 2021.07.08 350. 两个数组的交集 II and 349. 两个数组的交集

  • 2021.08.12 704. 二分查找

  • 2022.01.04 303. 区域和检索 - 数组不可变

  • 2022.03.03 453. 最小操作次数使数组元素相等 and 455. 分发饼干 and 495. 提莫攻击

中等难度
  • 2020.11.30 1438. 绝对差不超过限制的最长连续子数组

  • 2020.12.01 1267. 统计参与通信的服务器

  • 2020.12.02 120. 三角形最小路径和

  • 2021.05.25 15. 三数之和 and 16. 最接近的三数之和 and 11. 盛最多水的容器

  • 2021.05.25 18. 四数之和

  • 2021.06.02 31. 下一个排列 and 33. 搜索旋转排序数组

  • 2021.06.04 34. 在排序数组中查找元素的第一个和最后一个位置

  • 2021.06.07 39. 组合总和 and 40. 组合总和 II

  • 2021.06.08 45. 跳跃游戏 II

  • 2021.06.09 48. 旋转图像

  • 2021.06.11 54. 螺旋矩阵 and 55. 跳跃游戏

  • 2021.06.15 56. 合并区间 and 57. 插入区间

  • 2021.06.17 62. 不同路径 and 63. 不同路径 II

  • 2021.06.18 64. 最小路径和

  • 2021.06.21 73. 矩阵置零

  • 2021.06.27 36. 有效的数独

  • 2021.07.01 46. 全排列

  • 2021.07.06 1418. 点菜展示表(每日一题) and 47. 全排列 II

  • 2021.07.07 1711. 大餐计数

  • 2021.07.09 930. 和相同的二元子数组

  • 2021.07.26 240. 搜索二维矩阵 II and 300. 最长递增子序列

  • 2021.07.27 435. 无重叠区间

  • 2021.07.28 238. 除自身以外数组的乘积

  • 2021.08.03 74. 搜索二维矩阵

  • 2021.09.27 274. H 指数 and 275. H 指数 II and 1846. 减小和重新排列数组后的最大元素 and 面试题 10.02. 变位词组

关于数组的算法,可以使用的小技巧:
  • 使用后就删除
  • 求多个最大或者最小元素:628. 三个数的最大乘积

有序数组

  • 二分查找
  • 逆序遍历
  • 双指针遍历
  • 建立哈希表(元素唯一等情况)

无序数组

  • 排序
  • 建立哈希表(如统计元素出现次数、两数和以及其变种题)

有序二维数组:1351. 统计有序矩阵中的负数

  • 找到一个角,两个方向分别为非递增和非递减
  • 也可以选用二分查找

二维数组的遍历:

  • 用一维代替
  • 用两个一维数组来代替行列上的数

原地替换数组:1089. 复写零、88. 合并两个有序数组、1299. 将每个元素替换为右侧最大元素

  • 双指针(头尾指针、快慢指针)
  • 逆序遍历
  • 使用正负号标记元素
  • 使用二进制高位存储:1470. 重新排列数组

求k个元素和

  • 滑动窗口
  • 累加数组
  • 累加数组相减
  • 每次累加重置max

求元素频次超过半数:面试题 17.10. 主要元素、169. 多数元素

  • 摩尔投票法
  • 二进制数值判断
  • 若不超过半数则需要验证

棋盘类题目

  • 方向数组:999. 可以被一步捕获的棋子数、661. 图片平滑器

求两数最大公约数

  • 辗转相除法(欧几里得算法):914. 卡牌分组

查找数组从当前位置起第一个大于小于/不大于/不小于自己的元素

  • 单调栈 1475. 商品折扣后的最终价格

求连续子序列的各种

  • 前缀和!! 930. 和相同的二元子数组

Tree

简单难度
  • 2021.06.21 94. 二叉树的中序遍历 and 100. 相同的树

  • 2021.06.22 101. 对称二叉树

  • 2021.06.25 104. 二叉树的最大深度

  • 2021.07.01 108. 将有序数组转换为二叉搜索树

  • 2021.07.02 110. 平衡二叉树

  • 2021.07.06 111. 二叉树的最小深度

  • 2021.07.07 112. 路径总和

  • 2021.07.08 144. 二叉树的前序遍历

  • 2021.07.15 145. 二叉树的后序遍历

  • 2021.08.03 257. 二叉树的所有路径

  • 2021.09.22 226. 翻转二叉树 and 700. 二叉搜索树中的搜索 and 653. 两数之和 IV - 输入 BST

  • 2021.09.23 235. 二叉搜索树的最近公共祖先 and 404. 左叶子之和

中等难度
  • 2021.09.22 102. 二叉树的层序遍历
  • 2021.09.23 98. 验证二叉搜索树
关于树的算法,可以使用的小技巧:
  • Morris遍历算法,将空间复杂度降为O(1):94. 二叉树的中序遍历
  • 将递归改为迭代,牢记模拟递归隐藏的栈
  • 记录当前栈的长度进行节点遍历,可以计算树的高度:104. 二叉树的最大深度 and 111. 二叉树的最小深度

Linked List

简单难度
  • 2021.06.23 21. 合并两个有序链表 and 83. 删除排序链表中的重复元素 and 141. 环形链表

  • 2021.07.01 160. 相交链表

  • 2021.07.02 203. 移除链表元素

  • 2021.07.07 206. 反转链表 and 234. 回文链表

  • 2021.07.08 237. 删除链表中的节点

  • 2021.07.12 705. 设计哈希集合 and 706. 设计哈希映射

  • 2021.07.13 面试题 02.03. 删除中间节点 and 面试题 02.06. 回文链表 and 面试题 02.07. 链表相交 and 剑指 Offer 18. 删除链表的节点 and 剑指 Offer 24. 反转链表 and 剑指 Offer 25. 合并两个排序的链表 and 剑指 Offer 52. 两个链表的第一个公共节点

  • 2021.07.14 876. 链表的中间结点 and 剑指 Offer 06. 从尾到头打印链表 and 剑指 Offer 22. 链表中倒数第k个节点 and 面试题 02.02. 返回倒数第 k 个节点 and 1290. 二进制链表转整数 and 面试题 02.01. 移除重复节点 and 面试题 17.12. BiNode

中等难度
  • 2021.07.23 138. 复制带随机指针的链表

  • 2021.12.29 86. 分隔链表

  • 2022.01.05 109. 有序链表转换二叉搜索树

  • 2022.01.06 114. 二叉树展开为链表

  • 2022.01.13 147. 对链表进行插入排序

关于链表的算法,可以使用的小技巧:
  • 链表也是可以使用递归的,也可以使用迭代来解决
  • 合并链表时,迭代方法使用伪头节点可以归一化所有情况:21. 合并两个有序链表
  • 寻找链表存在的环,使用快慢指针:141. 环形链表
  • 对于删除节点的操作,如果头节点也可能被删除,那么就用伪头节点来操作
  • 相交链表的有趣解法,双指针遍历完一个链表以后继续遍历另一个链表:160. 相交链表
  • 寻找中间节点,也使用快慢指针的做法:876. 链表的中间结点

others

competition

中等难度
  • 2021.07.11 5793. 迷宫中离入口最近的出口

everyday

简单难度
  • 2021.09.29 171. Excel 表列序号
中等难度
  • 2021.09.27 274. H 指数 and 275. H 指数 II and 1846. 减小和重新排列数组后的最大元素 and 面试题 10.02. 变位词组

plan

简单难度
  • 2021.07.14 20. 有效的括号 and 232. 用栈实现队列

  • 2021.08.12 278. 第一个错误的版本

  • 2021.09.28 剑指 Offer 10- I. 斐波那契数列 and 剑指 Offer 10- II. 青蛙跳台阶问题 and 70. 爬楼梯 and 剑指 Offer 42. 连续子数组的最大和 and 136. 只出现一次的数字 and 剑指 Offer 09. 用两个栈实现队列 and 155. 最小栈 and 剑指 Offer 30. 包含min函数的栈 and 剑指 Offer 05. 替换空格 and 剑指 Offer 58 - II. 左旋转字符串

  • 2021.09.29 剑指 Offer 50. 第一个只出现一次的字符 and 剑指 Offer 32 - II. 从上到下打印二叉树 II and 剑指 Offer 27. 二叉树的镜像 and 剑指 Offer 28. 对称的二叉树 and 409. 最长回文串

  • 2021.10.26 1137. 第 N 个泰波那契数 and 415. 字符串相加

  • 2021.10.27 290. 单词规律 and 997. 找到小镇的法官 and 344. 反转字符串 and 557. 反转字符串中的单词 III and 733. 图像渲染 and 617. 合并二叉树

  • 2021.10.28 231. 2 的幂 and 191. 位1的个数 and 190. 颠倒二进制位

  • 2021.11.04 392. 判断子序列

  • 2021.11.05 844. 比较含退格的字符串

  • 2021.11.17 14. 最长公共前缀 and 572. 另一棵树的子树

  • 2021.11.22 剑指 Offer 11. 旋转数组的最小数字

  • 2021.11.23 剑指 Offer 55 - I. 二叉树的深度 and 剑指 Offer 55 - II. 平衡二叉树 and 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 and 剑指 Offer 57. 和为s的两个数字 and 剑指 Offer 58 - I. 翻转单词顺序 and 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

  • 2021.11.24 剑指 Offer 68 - II. 二叉树的最近公共祖先 and 剑指 Offer 15. 二进制中1的个数

  • 2021.11.25 剑指 Offer 65. 不用加减乘除做加法 and 剑指 Offer 61. 扑克牌中的顺子

  • 2021.11.26 剑指 Offer 40. 最小的k个数

  • 2022.01.05 剑指 Offer 39. 数组中出现次数超过一半的数字

  • 2022.01.06 剑指 Offer 54. 二叉搜索树的第k大节点

中等难度
  • 2021.09.23 981. 基于时间的键值存储

  • 2021.09.28 1877. 数组中最大数对和的最小值 and 剑指 Offer 35. 复杂链表的复制 and 剑指 Offer 63. 股票的最大利润

  • 2021.09.29 剑指 Offer 47. 礼物的最大价值 and 剑指 Offer 32 - I. 从上到下打印二叉树 and 剑指 Offer 32 - III. 从上到下打印二叉树 III and 剑指 Offer 26. 树的子结构

  • 2021.11.22 153. 寻找旋转排序数组中的最小值

  • 2021.11.23 151. 翻转字符串里的单词

  • 2021.11.24 236. 二叉树的最近公共祖先

可掌握的技巧
  • 快速幂的算法 剑指 Offer 10- I. 斐波那契数列
困难难度
  • 2021.11.22 154. 寻找旋转排序数组中的最小值 II