宫水三叶の刷题日记
  • 首页
  • 归档
  • 标签
  • 关于
  • 友链
  •   
  •   

LC 剑指 Offer 06. 从尾到头打印链表

题目描述这是 LeetCode 上的 剑指 Offer 06. 从尾到头打印链表 ,难度为 简单。 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1:123输入:head = [1,3,2]输出:[2,3,1] 限制: $0 <= 链表长度 <= 10000$ 迭代使用「迭代」方式求解是极其容易的。 在遍历链表 head 时,使用变长数组将节点值进行

2022-07-29
双指针 递归 链表 迭代

LC 剑指 Offer 25. 合并两个排序的链表

题目描述这是 LeetCode 上的 剑指 Offer 25. 合并两个排序的链表 ,难度为 简单。 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1:123输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 限制: $0 <= 链表长度 <= 1000$ 迭代 -

2022-07-29
递归 链表 迭代

LC 593. 有效的正方形

题目描述这是 LeetCode 上的 593. 有效的正方形 ,难度为 中等。 给定 2D 空间中四个点的坐标 a, b, c 和 d,如果这四个点构成一个正方形,则返回 true 。 点的坐标表示为 $[x_i, y_i]$ ,输入不是按任何顺序给出的。 一个有效的正方形有四条等边和四个等角(90度角)。 示例 1:123输入: a = [0,0], b = [1,1], c = [1,0],

2022-07-29
模拟 数学 计算几何

LC 1331. 数组序号转换

题目描述这是 LeetCode 上的 1331. 数组序号转换 ,难度为 简单。 给你一个整数数组 arr,请你将数组中的每个元素替换为它们排序后的序号。 序号代表了一个元素有多大。序号编号的规则如下: 序号从 $1$ 开始编号。 一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。 每个数字的序号都应该尽可能地小。 示例 1:12345输入:arr = [40,10,20,30

2022-07-28
哈希表 模拟 排序

LC 592. 分数加减运算

题目描述这是 LeetCode 上的 592. 分数加减运算 ,难度为 中等。 给定一个表示分数加减运算的字符串 expression,你需要返回一个字符串形式的计算结果。 这个结果应该是不可约分的分数,即最简分数。 如果最终结果是一个整数,例如 $2$,你需要将它转换成分数形式,其分母为 $1$。所以在上述例子中, $2$ 应该被转换为 2/1。 示例 1:123输入: expression

2022-07-27
模拟 表达式计算

LC 1206. 设计跳表

题目描述这是 LeetCode 上的 1206. 设计跳表 ,难度为 困难。 不使用任何库函数,设计一个跳表。 跳表 是在 $O(\log{n})$ 时间内完成增加、删除、搜索操作的数据结构。 跳表相比于树堆与红黑树,其功能与性能相当,并且跳表的代码长度相较下更短,其设计思想与链表相似。 例如,一个跳表包含 [30, 40, 50, 60, 70, 90],然后增加 80、45 到跳表中,以下图的

2022-07-26
链表 数据结构

LC 919. 完全二叉树插入器

题目描述这是 LeetCode 上的 919. 完全二叉树插入器 ,难度为 中等。 完全二叉树 是每一层(除最后一层外)都是完全填充(即,节点数达到最大)的,并且所有的节点都尽可能地集中在左侧。 设计一种算法,将一个新节点插入到一个完整的二叉树中,并在插入后保持其完整。 实现 CBTInserter 类: CBTInserter(TreeNode root) 使用头节点为 root 的给定树初始

2022-07-25
模拟 BFS 树的遍历

LC 1184. 公交站间的距离

题目描述这是 LeetCode 上的 1184. 公交站间的距离 ,难度为 简单。 环形公交路线上有 $n$ 个站,按次序从 $0$ 到 $n - 1$ 进行编号。我们已知每一对相邻公交站之间的距离,$distance[i]$ 表示编号为 $i$ 的车站和编号为 (i + 1) % n 的车站之间的距离。 环线上的公交车都可以按顺时针和逆时针的方向行驶。 返回乘客从出发点 start 到目的地 d

2022-07-24
模拟

LC 757. 设置交集大小至少为2

题目描述这是 LeetCode 上的 757. 设置交集大小至少为2 ,难度为 困难。 一个整数区间 $[a, b]$ ($a < b$) 代表着从 a 到 b 的所有连续整数,包括 a 和 b。 给你一组整数区间 intervals,请找到一个最小的集合 S,使得 S 里的元素与区间 intervals 中的每一个整数区间都至少有 $2$ 个元素相交。 输出这个最小集合 S 的大小。 示

2022-07-22
贪心

LC 814. 二叉树剪枝

题目描述这是 LeetCode 上的 814. 二叉树剪枝 ,难度为 中等。 给你二叉树的根结点 root,此外树的每个结点的值要么是 $0$ ,要么是 $1$ 。 返回移除了所有不包含 $1$ 的子树的原二叉树。 节点 node 的子树为 node 本身加上所有 node 的后代。 示例 1: 123456输入:root = [1,null,0,0,1]输出:[1,null,0,null,1]

2022-07-21
DFS 二叉树 递归

LC 1260. 二维网格迁移

题目描述这是 LeetCode 上的 1260. 二维网格迁移 ,难度为 简单。 给你一个 m 行 n 列的二维网格 grid 和一个整数 k。 你需要将 grid 迁移 k 次。 每次「迁移」操作将会引发下述活动: 位于 grid[i][j] 的元素将会移动到 grid[i][j + 1] 位于 grid[i][n - 1] 的元素将会移动到 grid[i + 1][0] 位于 grid[m

2022-07-20
模拟 构造

LC 731. 我的日程安排表 II

题目描述这是 LeetCode 上的 731. 我的日程安排表 II ,难度为 中等。 实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。 MyCalendar 有一个 book(int start, int end) 方法。它意味着在 start 到 end 时间内增加一个日程安排,注意,这里的时间是半开区间,即 $[star

2022-07-19
线段树 线段树(动态开点)

LC 749. 隔离病毒

题目描述这是 LeetCode 上的 749. 隔离病毒 ,难度为 困难。 病毒扩散得很快,现在你的任务是尽可能地通过安装防火墙来隔离病毒。 假设世界由 $m \times n$ 的二维矩阵 isInfected 组成,isInfected[i][j] == 0 表示该区域未感染病毒,而 isInfected[i][j] == 1 表示该区域已感染病毒。可以在任意 $2$ 个相邻单元之间的共享边

2022-07-18
模拟 BFS 图论搜索

LC 565. 数组嵌套

题目描述这是 LeetCode 上的 565. 数组嵌套 ,难度为 中等。 索引从 $0$ 开始长度为 N 的数组 A,包含 $0$ 到 $N - 1$ 的所有整数。找到最大的集合 S 并返回其大小,其中 $S[i] = {A[i], A[A[i]], A[A[A[i]]], … }$ 且遵守以下的规则。 假设选择索引为 i 的元素 $A[i]$ 为 S 的第一个元素,S 的下一个元素应该是 $A

2022-07-17
模拟

LC 剑指 Offer II 041. 滑动窗口的平均值

题目描述这是 LeetCode 上的 剑指 Offer II 041. 滑动窗口的平均值 ,难度为 简单。 给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算滑动窗口里所有数字的平均值。 实现 MovingAverage 类: MovingAverage(int size) 用窗口大小 size 初始化对象。 double next(int val) 成员函数 next 每次调用的时候

2022-07-16
模拟 队列
1…1516171819…58

搜索

Hexo Fluid
总访问量 次 总访客数 人