加载中...
分类详情
中等 分类
剑指 Offer II 092-翻转字符
原文链接: https://leetcode-cn.com/problems/cyJERH 中文题目如果一个由 '0' 和 '1' 组成的字符串,是以一些 '0'(可能没有 '0')后面跟着一些 '1'(也可能没有 '1')的形式组成的,那么该字符串是 单调递增 的。 我们给出一个由字符 '0' 和 '1' 组成的字符串 s,我们可以将任何 '0' 翻转为 '1' 或者将 '1' 翻转为 '0'。 返回使 s 单调递增 的最小翻转次数。 示例 1: 输入:s = "00110" 输出:1 解释:…
2021-12-03
剑指 Offer II 031-最近最少使用缓存
原文链接: https://leetcode-cn.com/problems/OrIXps 中文题目 运用所掌握的数据结构,设计和实现一个 LRU (Least Recently Used,最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, in…
2021-12-03
剑指 Offer II 093-最长斐波那契数列
原文链接: https://leetcode-cn.com/problems/Q91FMA 中文题目如果序列 X_1, X_2, ..., X_n 满足下列条件,就说它是 斐波那契式 的: n >= 3 对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_{i+2} 给定一个严格递增的正整数数组形成序列 arr ,找到 arr 中最长的斐波那契式的子序列的长度。如果一个不存在,返回 0 。 (回想一下,子序列是从原序列 arr 中派生出来的,它从 arr 中删掉任意数量的元…
2021-12-03
剑指 Offer II 095-最长公共子序列
原文链接: https://leetcode-cn.com/problems/qJnOS7 中文题目给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。 两个字符串的 公共子序列 是…
2021-12-03
剑指 Offer II 033-变位词组
原文链接: https://leetcode-cn.com/problems/sfvd7V 中文题目给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。 注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。 示例 1: 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate","eat","tea"]] 示例 2: 输入: strs…
2021-12-03
剑指 Offer II 096-字符串交织
原文链接: https://leetcode-cn.com/problems/IY6buf 中文题目给定三个字符串 s1、s2、s3,请判断 s3 能不能由 s1 和 s2 交织(交错) 组成。 两个字符串 s 和 t 交织 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: s = s1 + s2 + ... + sn t = t1 + t2 + ... + tm |n - m| <= 1 交织 是 s1 + t1 + s2 + t2 + s3 + t3 + ... 或者 t1…
2021-12-03
剑指 Offer II 035-最小时间差
原文链接: https://leetcode-cn.com/problems/569nqc 中文题目给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:timePoints = ["00:00","23:59","00:00"] 输出:0 提示: 2 <= timePoints <= 2 * 104 timePoints[i]…
2021-12-03
剑指 Offer II 036-后缀表达式
原文链接: https://leetcode-cn.com/problems/8Zf90G 中文题目根据 逆波兰表示法,求该后缀表达式的计算结果。 有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 输入:tokens = ["2","1","+","3","*"] 输出:9 解释:该算式转化为常见的中缀算术表达式为:((2 …
2021-12-03
剑指 Offer II 037-小行星碰撞
原文链接: https://leetcode-cn.com/problems/XagZNi 中文题目给定一个整数数组 asteroids,表示在同一行的小行星。 对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。 找出碰撞后剩下的所有小行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。 示例 1: 输入:asteroids…
2021-12-03
剑指 Offer II 038-每日温度
原文链接: https://leetcode-cn.com/problems/iIQa4I 中文题目请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入: temperatures = [73,74,75,71,69,72,76,73] 输出: [1,1,4,2,1,1,0,0] 示例 2: 输入: temperatures = [30,40…
2021-12-03
剑指 Offer II 099-最小路径之和
原文链接: https://leetcode-cn.com/problems/0i0mDW 中文题目给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:一个机器人每次只能向下或者向右移动一步。 示例 1: 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径 1&rarr;3&rarr;1&rarr;1&rarr;1 的总和最小。 示例 2: 输入:grid = [[1,2,3],…
2021-12-03
剑指 Offer II 100-三角形中最小路径之和
原文链接: https://leetcode-cn.com/problems/IlPe0q 中文题目给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。 示例 1: 输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]…
2021-12-03
剑指 Offer II 102-加减的目标值
原文链接: https://leetcode-cn.com/problems/YaVDxD 中文题目给定一个正整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。 返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。 示例 1: 输入:nums…
2021-12-03
剑指 Offer II 103-最少的硬币数目
原文链接: https://leetcode-cn.com/problems/gaM7Ch 中文题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 示例 1: 输入:coins = [1, 2, 5], amount = 11 输出:3 解释:11 = 5 + 5 + 1 示例 2: 输入:coins = [2], amount = 3 输出:…
2021-12-03
剑指 Offer II 104-排列的数目
原文链接: https://leetcode-cn.com/problems/D0F0SV 中文题目给定一个由 不同 正整数组成的数组 nums ,和一个目标整数 target 。请从 nums 中找出并返回总和为 target 的元素组合的个数。数组中的数字可以在一次排列中出现任意次,但是顺序不同的序列被视作不同的组合。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums = [1,2,3], target = 4 输出:7 解释: 所有可能的组合为: (1, 1, 1, 1…
2021-12-03
剑指 Offer II 105-岛屿的最大面积
原文链接: https://leetcode-cn.com/problems/ZL6zAn 中文题目给定一个由 0 和 1 组成的非空二维数组 grid ,用来表示海洋岛屿地图。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 找到给定的二维数组中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。 示例 1: 输入: grid = [[0,0,1,0,0,0,0,1,0…
2021-12-03
剑指 Offer II 043-往完全二叉树添加节点
原文链接: https://leetcode-cn.com/problems/NaqhDT 中文题目完全二叉树是每一层(除最后一层外)都是完全填充(即,节点数达到最大,第 n 层有 2n-1 个节点)的,并且所有的节点都尽可能地集中在左侧。 设计一个用完全二叉树初始化的数据结构 CBTInserter,它支持以下几种操作: CBTInserter(TreeNode root) 使用根节点为 root 的给定树初始化该数据结构; CBTInserter.insert(int v) 向树中插入一个新…
2021-12-03
剑指 Offer II 107-矩阵中的距离
原文链接: https://leetcode-cn.com/problems/2bCMpM 中文题目给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入:mat = [[0,0,0],[0,1,0],[0,0,0]] 输出:[[0,0,0],[0,1,0],[0,0,0]] 示例 2: 输入:mat = [[0,0,0],[0,1,0],[1,1,1]] 输出:[[…
2021-12-03
剑指 Offer II 045-二叉树最底层最左边的值
原文链接: https://leetcode-cn.com/problems/LwUNpT 中文题目给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root = [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 提示: 二叉树的节点个数的范围是 [1,104] -231 <= Node.val <= 231 - 1 注意:本题与主站 513 …
2021-12-03
剑指 Offer II 044-二叉树每层的最大值
原文链接: https://leetcode-cn.com/problems/hPov7L 中文题目给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。 示例1: 输入: root = [1,3,2,5,3,null,9] 输出: [1,3,9] 解释: 1 / \ 3 2 / \ \ 5 3 9 示例2: 输入: root = [1,2,3] 输出: [1,3] 解释: 1 / \ 2 3 示例3: 输入: root = [1] 输出: [1] 示例4: 输入: root = …
2021-12-03
剑指 Offer II 046-二叉树的右侧视图
原文链接: https://leetcode-cn.com/problems/WNC0Lk 中文题目给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: [] 提示: 二叉树的节点个数的范围是 [0,100] -100 <= Node.val <= 100 …
2021-12-03
剑指 Offer II 047-二叉树剪枝
原文链接: https://leetcode-cn.com/problems/pOCWxh 中文题目给定一个二叉树 根节点 root ,树的每个节点的值要么是 0,要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。 节点 node 的子树为 node 本身,以及所有 node 的后代。 示例 1: 输入: [1,null,0,0,1] 输出: [1,null,0,null,1] 解释: 只有红色节点满足条件&ldquo;所有不包含 1 的子树&rdquo;。 右图为返回的答案。 示例 2:…
2021-12-03
剑指 Offer II 109-开密码锁
原文链接: https://leetcode-cn.com/problems/zlDJc7 中文题目一个密码锁由 4 个环形拨轮组成,每个拨轮都有 10 个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为 '0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。 锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。 列表 deadends 包含了一组死亡数字,一旦拨轮的…
2021-12-03
剑指 Offer II 110-所有路径
原文链接: https://leetcode-cn.com/problems/bP4bmD 中文题目给定一个有 n 个节点的有向无环图,用二维数组 graph 表示,请找到所有从 0 到 n-1 的路径并输出(不要求按顺序)。 graph 的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些结点(译者注:有向图是有方向的,即规定了 a&rarr;b 你就不能从 b&rarr;a ),若为空,就是没有下一个节点了。 示例 1: 输入:graph = [[1,2],[3],[3],[]…
2021-12-03
剑指 Offer II 049-从根节点到叶节点的路径数字之和
原文链接: https://leetcode-cn.com/problems/3Etpl5 中文题目给定一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字: 例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。 计算从根节点到叶节点生成的 所有数字之和 。 叶节点 是指没有子节点的节点。 示例 1: 输入:root = [1,2,3] 输出:25 解释: 从根到叶子节点路径 1->2 代表数字 12 …
2021-12-03
剑指 Offer II 050-向下的路径节点之和
原文链接: https://leetcode-cn.com/problems/6eUYwP 中文题目给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例 1: 输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8 输出:3 解释:和等于 8 的…
2021-12-03
剑指 Offer II 113-课程顺序
原文链接: https://leetcode-cn.com/problems/QA2IGt 中文题目现在总共有 numCourses 门课需要选,记为 0 到 numCourses-1。 给定一个数组 prerequisites ,它的每一个元素 prerequisites[i] 表示两门课程之间的先修顺序。 例如 prerequisites[i] = [ai, bi] 表示想要学习课程 ai ,需要先完成课程 bi 。 请根据给出的总课程数 numCourses 和表示先修顺序的 prereq…
2021-12-03
剑指 Offer II 053-二叉搜索树中的中序后继
原文链接: https://leetcode-cn.com/problems/P5rCT8 中文题目给定一棵二叉搜索树和其中的一个节点 p ,找到该节点在树中的中序后继。如果节点没有中序后继,请返回 null 。 节点 p 的后继是值比 p.val 大的节点中键值最小的节点,即按中序遍历的顺序节点 p 的下一个节点。 示例 1: 输入:root = [2,1,3], p = 1 输出:2 解释:这里 1 的中序后继是 2。请注意 p 和返回值都应是 TreeNode 类型。 示例 2: 输入:r…
2021-12-03
剑指 Offer II 115-重建序列
原文链接: https://leetcode-cn.com/problems/ur2n8P 中文题目请判断原始的序列 org 是否可以从序列集 seqs 中唯一地 重建 。 序列 org 是 1 到 n 整数的排列,其中 1 &le; n &le; 104。重建 是指在序列集 seqs 中构建最短的公共超序列,即 seqs 中的任意序列都是该最短序列的子序列。 示例 1: 输入: org = [1,2,3], seqs = [[1,2],[1,3]] 输出: false 解释:[1,2,3] 不…
2021-12-03
剑指 Offer II 054-所有大于等于节点的值之和
原文链接: https://leetcode-cn.com/problems/w6cpku 中文题目给定一个二叉搜索树,请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下,二叉搜索树满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左右子树也必须是二叉搜索树。 示例 1: 输入:root = [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8] 输出:[30,36,…
2021-12-03