加载中...
分类详情
中等 分类
剑指 Offer II 055-二叉搜索树迭代器
原文链接: https://leetcode-cn.com/problems/kTOapQ 中文题目实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。 boolean hasNext() 如果向指针右侧遍历存在…
2021-12-03
剑指 Offer II 118-多余的边
原文链接: https://leetcode-cn.com/problems/7LpjUW 中文题目树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges ,edges[i] = [ai, bi] 表示图中在 ai 和 bi 之间存在一条边。 请找出一条可以删去的边,删除后可使得剩余部分是一个有着 n 个节点的…
2021-12-03
剑指 Offer II 057-值和下标之差都在给定的范围内
原文链接: https://leetcode-cn.com/problems/7WqeDu 中文题目给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。 如果存在则返回 true,不存在返回 false。 示例 1: 输入:nums = [1,2,3,1], k = 3, t = 0 输出:true 示例 2: 输入:nums = [1,0,…
2021-12-03
剑指 Offer II 119-最长连续序列
原文链接: https://leetcode-cn.com/problems/WhsWhI 中文题目给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 示例 1: 输入:nums = [100,4,200,1,3,2] 输出:4 解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。 示例 2: 输入:nums = [0,3,7,2,5,8,4,6,0,1] 输出:9 提示: 0 <= nums.length <= 104 -109…
2021-12-03
剑指 Offer II 058-日程表
原文链接: https://leetcode-cn.com/problems/fi9suh 中文题目请实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内没有其他安排,则可以存储这个新的日程安排。 MyCalendar 有一个 book(int start, int end)方法。它意味着在 start 到 end 时间内增加一个日程安排,注意,这里的时间是半开区间,即 [start, end), 实数 x 的范围为, start <= x < end。 当两个日程安排有一些…
2021-12-03
剑指 Offer II 060-出现频率最高的 k 个数字
原文链接: https://leetcode-cn.com/problems/g5c51o 中文题目给定一个整数数组 nums 和一个整数 k ,请返回其中出现频率前 k 高的元素。可以按 任意顺序 返回答案。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 提示: 1 <= nums.length <= 105 k 的取值范围是 [1, 数组中不相同的元素的个数] 题目数据保…
2021-12-03
剑指 Offer II 061-和最小的 k 个数对
原文链接: https://leetcode-cn.com/problems/qn8gGX 中文题目给定两个以升序排列的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) ... (uk,vk) 。 示例 1: 输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3 输出: [1,2],[1,4],[1…
2021-12-03
剑指 Offer II 063-替换单词
原文链接: https://leetcode-cn.com/problems/UhWRSj 中文题目在英语中,有一个叫做 词根(root) 的概念,它可以跟着其他一些词组成另一个较长的单词&mdash;&mdash;我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。 现在,给定一个由许多词根组成的词典和一个句子,需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。 需…
2021-12-03
剑指 Offer II 064-神奇的字典
原文链接: https://leetcode-cn.com/problems/US1pGT 中文题目设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于已构建的神奇字典中。 实现 MagicDictionary 类: MagicDictionary() 初始化对象 void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结…
2021-12-03
剑指 Offer II 065-最短的单词编码
原文链接: https://leetcode-cn.com/problems/iSwD2y 中文题目单词数组 words 的 有效编码 由任意助记字符串 s 和下标数组 indices 组成,且满足: words.length == indices.length 助记字符串 s 以 '#' 字符结尾 对于每个下标 indices[i] ,s 的一个从 indices[i] 开始、到下一个 '#' 字符结束(但不包括 '#')的 子字符串 恰好与 words[i] 相等 给定一个单词数组 word…
2021-12-03
剑指 Offer II 066-单词之和
原文链接: https://leetcode-cn.com/problems/z1R5dt 中文题目实现一个 MapSum 类,支持两个方法,insert 和 sum: MapSum() 初始化 MapSum 对象 void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key 已经存在,那么原来的键值对将被替代成新的键值对。 int sum(string prefix) 返回所有以该前缀 prefix…
2021-12-03
剑指 Offer II 067-最大的异或
原文链接: https://leetcode-cn.com/problems/ms70jA 中文题目给定一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 &le; i &le; j < n 。 示例 1: 输入:nums = [3,10,5,25,2,8] 输出:28 解释:最大运算结果是 5 XOR 25 = 28. 示例 2: 输入:nums = [0] 输出:0 示例 3: 输入:nums = [2,4] 输出:6 示例 4: 输入:nums…
2021-12-03
剑指 Offer II 070-排序数组中只出现一次的数字
原文链接: https://leetcode-cn.com/problems/skFtm2 中文题目给定一个只包含整数的有序数组 nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。 示例 1: 输入: nums = [1,1,2,3,3,4,4,8,8] 输出: 2 示例 2: 输入: nums = [3,3,7,7,10,11,11] 输出: 10 提示: 1 <= nums.length <= 105 0 <= nums[i] <= 105 进阶: 采用的方案可…
2021-12-03
剑指 Offer II 071-按权重生成随机数
原文链接: https://leetcode-cn.com/problems/cuyjEf 中文题目给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。 例如,对于 w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 + 3) = 0.75(即,75%)。 也就是说,选取下标…
2021-12-03
剑指 Offer II 073-狒狒吃香蕉
原文链接: https://leetcode-cn.com/problems/nZZqjQ 中文题目狒狒喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 狒狒可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉,下一个小时才会开始吃另一堆的香蕉。 狒狒喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可…
2021-12-03
剑指 Offer II 074-合并区间
原文链接: https://leetcode-cn.com/problems/SsGoHC 中文题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[15,18]] 输出:[[1,6],[8,10],[15,18]] 解释:区间 [1,3] 和 [2…
2021-12-03
剑指 Offer II 076-数组中的第 k 大的数字
原文链接: https://leetcode-cn.com/problems/xx4gT2 中文题目给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 提示: 1 <= k <= nums.length <= 104 -104 <=…
2021-12-03
剑指 Offer II 077-链表排序
原文链接: https://leetcode-cn.com/problems/7WHec2 中文题目给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head = [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head = [-1,5,3,4,0] 输出:[-1,0,3,4,5] 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目在范围 [0, 5 * 104] 内 -105 <= Node.val <= 10…
2021-12-03
剑指 Offer II 079-所有子集
原文链接: https://leetcode-cn.com/problems/TVdhkn 中文题目给定一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例 2: 输入:nums = [0] 输出:[[],[0]] 提示: 1 <= nums.length <…
2021-12-03
剑指 Offer II 080-含有 k 个元素的组合
原文链接: https://leetcode-cn.com/problems/uUsW3B 中文题目给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例 1: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示例 2: 输入: n = 1, k = 1 输出: [[1]] 提示: 1 <= n <= 20 1 <= k <= n 注意:本题与主站 77 题相同: https://…
2021-12-03
剑指 Offer II 098-路径的数目
原文链接: https://leetcode-cn.com/problems/2AoeFn 中文题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 &ldquo;Start&rdquo; )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 &ldquo;Finish&rdquo; )。 问总共有多少条不同的路径? 示例 1: 输入:m = 3, n = 7 输出:28 示例 2: 输入:m = 3, n = 2 输出:3 解释: 从左上角开…
2021-12-03
剑指 Offer II 116-省份数量
原文链接: https://leetcode-cn.com/problems/bLyHh0 中文题目 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected…
2021-12-03
LCP 41-黑白翻转棋
原文链接: https://leetcode-cn.com/problems/fHi6rV 英文原文 中文题目在 `n*m` 大小的棋盘中,有黑白两种棋子,黑棋记作字母 `"X"`, 白棋记作字母 `"O"`,空余位置记作 `"."`。当落下的棋子与其他相同颜色的棋子在行、列或对角线完全包围(中间不存在空白位置)另一种颜色的棋子,则可以翻转这些棋子的颜色。 {:height&#x3D;170px}{:height&#x3D;170px}{:height&#x3D;170px} 「力扣挑战赛」黑白…
2021-12-03
LCP 46-志愿者调配
原文链接: https://leetcode-cn.com/problems/05ZEDJ 英文原文 中文题目「力扣挑战赛」有 `n` 个比赛场馆(场馆编号从 `0` 开始),场馆之间的通道分布情况记录于二维数组 `edges` 中,`edges[i]= [x, y]` 表示第 `i` 条通道连接场馆 `x` 和场馆 `y`(即两个场馆相邻)。初始每个场馆中都有一定人数的志愿者(不同场馆人数可能不同),后续 `m` 天每天均会根据赛事热度进行志愿者人数调配。调配方案分为如下三种: 1. 将编号为…
2021-12-03
LCP 45-自行车炫技赛场
原文链接: https://leetcode-cn.com/problems/kplEvH 英文原文 中文题目「力扣挑战赛」中 `N*M` 大小的自行车炫技赛场的场地由一片连绵起伏的上下坡组成,场地的高度值记录于二维数组 `terrain` 中,场地的减速值记录于二维数组 `obstacle` 中。 - 若选手骑着自行车从高度为 `h1` 且减速值为 `o1` 的位置到高度为 `h2` 且减速值为 `o2` 的相邻位置(上下左右四个方向),速度变化值为 `h1-h2-o2`(负值减速,正值增速)…
2021-12-03