
LeetCode
文章平均质量分 69
Leetcode
Whisper_yl
这个作者很懒,什么都没留下…
展开
-
LeetCode: 1109. 航班预订统计(差分数组求区间和)
这里有n个航班,它们分别从 1 到 n 进行编号。有一份航班预订表bookings ,表中第i条预订记录bookings[i] = [firsti, lasti, seatsi]意味着在从 firsti到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi个座位。请你返回一个长度为 n 的数组answer,其中 answer[i] 是航班 i 上预订的座位总数。示例 1:输入:bookings = [[1,2,10],[2,3,2...原创 2021-08-31 19:49:14 · 340 阅读 · 0 评论 -
LeetCode: 526. 优美的排列(状态压缩DP)
假设有从 1 到 N 的N个整数,如果从这N个数字中成功构造出一个数组,使得数组的第 i位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第i位的数字能被i整除i 能被第 i 位上的数字整除现在给定一个整数 N,请问可以构造多少个优美的排列?示例1:输入: 2输出: 2解释:第 1 个优美的排列是 [1, 2]: 第 1 个位置(i=1)上的数字是1,1能被 i(i=1)整除 第 2 个位置(i=...原创 2021-08-16 23:18:32 · 301 阅读 · 0 评论 -
LeetCode: 5815. 扣分后的最大得分
给你一个m x n的整数矩阵points(下标从 0开始)。一开始你的得分为 0,你想最大化从矩阵中得到的分数。你的得分方式为:每一行中选取一个格子,选中坐标为(r, c)的格子会给你的总得分 增加points[r][c]。然而,相邻行之间被选中的格子如果隔得太远,你会失去一些得分。对于相邻行r 和r + 1(其中0 <= r < m - 1),选中坐标为(r, c1) 和(r + 1, c2)的格子,你的总得分减少abs(c1 - c2)。...原创 2021-07-18 21:17:39 · 235 阅读 · 1 评论 -
LeetCode: 752. 打开转盘锁(双向bfs)
你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为'0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 target 代表可以解锁的数字.原创 2021-06-26 20:09:03 · 357 阅读 · 0 评论 -
LeetCode: 239. 滑动窗口最大值
给你一个整数数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 ...原创 2021-06-23 21:06:59 · 187 阅读 · 1 评论 -
LeetCode: “马”在棋盘上的概率
已知一个NxN的国际象棋棋盘,棋盘的行号和列号都是从 0 开始。即最左上角的格子记为(0, 0),最右下角的记为(N-1, N-1)。现有一个 “马”(也译作 “骑士”)位于(r, c),并打算进行K 次移动。如下图所示,国际象棋的 “马” 每一步先沿水平或垂直方向移动 2 个格子,然后向与之相垂直的方向再移动 1 个格子,共有 8 个可选的位置。...原创 2021-06-04 20:19:36 · 322 阅读 · 0 评论 -
LeetCode: 523. 连续的子数组和
给你一个整数数组 nums 和一个整数k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。示例 1:输入:nums = [23,2,4,6,7], k = 6输出:true解释:[2,4] 是一个大小为 2 的子数组,并且和为 6 。示例 2:输入:n..原创 2021-06-02 18:23:31 · 265 阅读 · 0 评论 -
LeetCode: 1074. 元素和为目标值的子矩阵数量
给出矩阵matrix和目标值target,返回元素总和等于目标值的非空子矩阵的数量。子矩阵x1, y1, x2, y2是满足 x1 <= x <= x2且y1 <= y <= y2的所有单元matrix[x][y]的集合。如果(x1, y1, x2, y2) 和(x1', y1', x2', y2')两个子矩阵中部分坐标不同(如:x1 != x1'),那么这两个子矩阵也不同。示例 1:输入:matrix = [[0,1,0],[1,1,...原创 2021-05-31 23:21:27 · 224 阅读 · 3 评论 -
LeetCode: 1081. 不同字符的最小子序列
返回s字典序最小的子序列,该子序列包含s的所有不同字符,且只包含一次。示例 1:输入:s = "bcabc"输出:"abc"示例 2:输入:s = "cbacdcbc"输出:"acdb"提示:1 <= s.length <= 1000s 由小写英文字母组成分析: 该题有两个要求,一是要保证不同的字符只能出现一次,二是保证返回字典序最小的子序列。为了保证整体字典序最小,我们要尽可能使字典序较小的字符出现在前面。只出现一次的字符我们也要保留...原创 2021-05-05 22:11:51 · 282 阅读 · 0 评论 -
LeetCode: 240. 搜索二维矩阵 II
编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例 1:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true示例 2:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19]...原创 2021-05-02 21:58:15 · 375 阅读 · 0 评论 -
LeetCode: 137. 只出现一次的数字 II
给你一个整数数组nums ,除某个元素仅出现 一次外,其余每个元素都恰出现三次 。请你找出并返回那个只出现了一次的元素。示例 1:输入:nums = [2,2,3,2]输出:3示例 2:输入:nums = [0,1,0,1,0,1,99]输出:99提示:1 <= nums.length <= 3 * 104-231 <= nums[i] <= 231 - 1nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次分析:...原创 2021-04-30 21:29:01 · 153 阅读 · 2 评论 -
LeetCode: 377. 组合总和 Ⅳ
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。示例 1:输入:nums = [1,2,3], target = 4输出:7解释:所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不同的序列被视作不同的组合。示例 2:输入:nums.原创 2021-04-27 21:38:24 · 113 阅读 · 0 评论 -
LeetCode: 130. 被围绕的区域
给定一个二维的矩阵,包含'X'和'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的'O' 用 'X' 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不会被填充为'X'。 任何不在边界上,或不与边界上的'O'相连的'O'最终都会被填充为'X'。如果两个元素在水平...原创 2020-08-11 14:48:17 · 184 阅读 · 0 评论 -
LeetCode: 337. 打家劫舍 III
在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,null,3,null,1] 3 / \ 2 3 \ \ ...原创 2020-08-05 18:59:49 · 189 阅读 · 0 评论 -
LeetCode: 410. 分割数组的最大值
给定一个非负整数数组和一个整数m,你需要将这个数组分成m个非空的连续子数组。设计一个算法使得这m个子数组各自和的最大值最小。注意:数组长度n满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。分析...原创 2020-07-30 13:47:35 · 340 阅读 · 0 评论 -
LeetCode: 343. 整数拆分
给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×3 ×4 = 36。说明: 你可以假设n不小于 2 且不大于 58。分析: 求最大乘积,可以考虑动态规划的方法。设置dp数组,定义dp[i]为将i按题意拆分,可获得的最大乘积。 我...原创 2020-07-30 10:32:32 · 213 阅读 · 0 评论 -
LeetCode: 785. 判断二分图
给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边:graph[i]中不存在i,并且graph[i]中没有重复的值。示例 1:输入: [[1,3], [0,2], [1,3], ..原创 2020-07-16 12:29:37 · 207 阅读 · 1 评论 -
LeetCode: 44. 通配符匹配
给定一个字符串(s) 和一个字符模式(p) ,实现一个支持'?'和'*'的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符?和*。示例1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。示例2:输入:s = "aa"p...原创 2020-07-05 16:57:35 · 211 阅读 · 0 评论 -
LeetCode: 32. 最长有效括号
给定一个只包含 '('和 ')'的字符串,找出最长的包含有效括号的子串的长度。示例1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"分析: 解决这个问题,我主要的思路还是动态规划,问题是怎么写状态转移方程。首先要定义一个dp数组,如果是一维,那么dp[i]代表什么含义?如果是二维,那么dp[i][j]代表什么?又怎样构造状态转移方程?我觉得还是从一维开始考虑,...原创 2020-07-04 22:44:05 · 202 阅读 · 0 评论 -
LeetCode: 125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false分析: 水题一个,思路是双指针判断回文串,主要就是注意一下isalnum(), tolower()等函数的用法。class Solution {public: bool...原创 2020-06-19 12:21:02 · 153 阅读 · 0 评论 -
LeetCode: 1300. 转变数组后最接近目标值的数组和
给你一个整数数组arr 和一个目标值target ,请你返回一个整数value,使得将数组中所有大于value 的值变成value 后,数组的和最接近target(最接近表示两者之差的绝对值最小)。如果有多种使得和最接近target的方案,请你返回这些整数中的最小值。请注意,答案不一定是arr 中的数字。示例 1:输入:arr = [4,9,3], target = 10输出:3解释:当选择 value 为 3 时,数组会变成 [3, 3, 3],和为 9 ...原创 2020-06-16 22:18:55 · 239 阅读 · 0 评论 -
LeetCode: 1160. 拼写单词(memcpy)
给你一份『词汇表』(字符串数组)words和一张『字母表』(字符串)chars。假如你可以用chars中的『字母』(字符)拼写出 words中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表words中你掌握的所有单词的 长度之和。示例 1:输入:words = ["cat","b...原创 2020-03-17 09:28:20 · 306 阅读 · 0 评论 -
LeetCode: 1071. 字符串的最大公因子
对于字符串S 和T,只有在 S = T + ... + T(T与自身连接 1 次或多次)时,我们才认定“T 能除尽 S”。返回最长字符串X,要求满足X 能除尽 str1 且X 能除尽 str2。示例 1:输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC"示例 2:输入:str1 = "ABABAB", str2 = "ABAB"...原创 2020-03-12 10:18:39 · 169 阅读 · 0 评论 -
LeetCode: 1025. 除数博弈
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字N。在每个玩家的回合,玩家需要执行以下操作:选出任一x,满足0 < x < N 且N % x == 0。用 N - x替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回True,否则返回 false。假设两个玩家都以最佳状态参与游...原创 2020-03-09 16:48:41 · 154 阅读 · 0 评论 -
LeetCode: 101. 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3分析: 本题要判断一棵树是否镜面对称,...原创 2020-03-08 18:46:35 · 124 阅读 · 0 评论 -
LeetCode: 322. 零钱兑换(dp)
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可...原创 2020-03-08 18:20:48 · 153 阅读 · 0 评论