其他
一道题目写一天
这个作者很懒,什么都没留下…
展开
-
数据流中的中位数
问题描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例 1:输入:原创 2021-05-13 17:09:14 · 85 阅读 · 0 评论 -
天际线问题
问题描述 :城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。现在,假设您获得了城市风光照片(图A)上显示的所有建筑物的位置和高度,请编写一个程序以输出由这些建筑物形成的天际线(图B)。每个建筑物的几何信息用三元组 [Li,Ri,Hi] 表示,其中 Li 和 Ri 分别是第 i 座建筑物左右边缘的 x 坐标,Hi 是其高度。可以保证 0 ≤ Li, Ri ≤ INT_MAX, 0 < Hi ≤ INT_MAX 和 Ri - Li > 0。您可以假设所有建筑物都是在绝对平坦且原创 2020-09-04 21:53:40 · 393 阅读 · 0 评论 -
掉落的方块
问题描述 :在无限长的数轴(即 x 轴)上,我们根据给定的顺序放置对应的正方形方块。第 i 个掉落的方块(positions[i] = (left, side_length))是正方形,其中 left 表示该方块最左边的点位置(positions[i][0]),side_length 表示该方块的边长(positions[i][1])。每个方块的底部边缘平行于数轴(即 x 轴),并且从一个比目前所有的落地方块更高的高度掉落而下。在上一个方块结束掉落,并保持静止后,才开始掉落新方块。方块的底边具有非常原创 2020-09-03 19:30:07 · 427 阅读 · 0 评论 -
矩形面积 II
问题描述 :我们给出了一个(轴对齐的)矩形列表 rectangles 。 对于 rectangle[i] = [x1, y1, x2, y2],其中(x1,y1)是矩形 i 左下角的坐标,(x2,y2)是该矩形右上角的坐标。找出平面中所有矩形叠加覆盖后的总面积。 由于答案可能太大,请返回它对 10 ^ 9 + 7 取模的结果。示例 1:输入:[[0,0,2,2],[1,0,2,3],[1,0,3,1]]输出:6解释:如图所示。示例 2:输入:[[0,0,1000000000,1000000原创 2020-09-02 16:12:53 · 490 阅读 · 0 评论 -
子数组中占绝大多数的元素
问题描述 :实现一个 MajorityChecker 的类,它具有下述两个 API:1、MajorityChecker(int[] arr) :用给定的数组 arr 来构造一个 MajorityChecker 的实例。2、int query(int left, int right, int threshold)参数为:0 <= left <= right < arr.length ,其中arr.length表示数组 arr 的长度。2 * threshold > righ原创 2020-09-02 16:10:28 · 274 阅读 · 0 评论 -
交换字符串中的元素
问题描述 :给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。你可以 任意多次交换 在 pairs 中任意一对索引处的字符。返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。示例 1:输入:s = “dcab”, pairs = [[0,3],[1,2]]输出:“bacd”解释:交换 s[0] 和 s[3], s = “bcad”交换 s[1] 和 s[2], s = “bac原创 2020-09-01 16:40:09 · 643 阅读 · 0 评论 -
由斜杠划分区域
问题描述 :在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。(请注意,反斜杠字符是转义的,因此输入的字符串中是 \,在代码中函数调用时传递的实参用 “\” 表示一个""。)。返回区域的数目。示例 1:输入:[" /","/ "]输出:2解释:2x2 网格如下:示例 2:输入:[" /"," "]输出:1解释:2x2 网格如下:示例 3:输入:[“/”,“/”原创 2020-08-31 15:47:46 · 255 阅读 · 0 评论 -
移除最多的同行或同列石头
问题描述 :我们将石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。每次 move 操作都会移除一块所在行或者列上有其他石头存在的石头。请你设计一个算法,计算最多能执行多少次 move 操作?示例 1:输入:stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]输出:5示例 2:输入:stones = [[0,0],[0,2],[1,1],[2,0],[2,2]]输出:3示例 3:输入:stones = [[0,0]]输出:原创 2020-08-30 20:22:26 · 277 阅读 · 0 评论 -
单词替换
问题描述 :在英语中,我们有一个叫做 词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。现在,给定一个由许多词根组成的词典和一个句子。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。你需要输出替换之后的句子。示例 1:输入:dictionary = [“cat”,“bat”,“rat”], sen原创 2020-08-30 16:18:42 · 308 阅读 · 0 评论 -
驼峰式匹配
问题描述 :如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)给定待查询列表 queries,和模式串 pattern,返回由布尔值组成的答案列表 answer。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 true,否则为 false。示例 1:输入:pattern = “FB”,queries = [“FooBar”,“FooBa原创 2020-08-30 15:50:43 · 266 阅读 · 0 评论 -
词典中最长的单词
问题描述 :给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。示例 1:输入:words = [“w”,“wo”,“wor”,“worl”, “world”]输出:“world”解释:单词"world"可由"w", “wo”, “wor”, 和 “worl"添加一个字母组成。第一个单词是"w”,该单词只有一个字母。我们需要从一个字母的单原创 2020-08-29 21:48:23 · 431 阅读 · 0 评论