常用算法考题
文章平均质量分 64
yinhua405
努力工作
展开
-
407. 接雨水 II
给你一个 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。示例 1:输入: heightMap = [[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]]输出: 4解释: 下雨后,雨水将会被上图蓝色的方块中。总的接雨水量为1+2+1=4。示例 2:输入: heightMap = [[3,3,3,3,3],[3,2,2,2,3],[3,2,1,2,3],[3,2,2,2,3],[3,3,3,3,3]]输出: 1原创 2022-12-06 07:17:46 · 224 阅读 · 0 评论 -
556. 下一个更大元素 III
请你找出符合条件的最小整数,其由重新排列。中存在的每位数字组成,并且其值大于。如果不存在这样的正整数,则返回。,如果存在满足题意的答案,但不是。,返回的整数应当是一个。原创 2022-11-23 06:53:40 · 155 阅读 · 0 评论 -
503. 下一个更大元素 II
是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。第二个 1 的下一个最大的数需要循环搜索,结果也是 2。第一个 1 的下一个更大的数是 2;//重复一次数组就相当于循环。数字 2 找不到下一个更大的数;原创 2022-11-21 07:23:16 · 98 阅读 · 0 评论 -
410. 分割数组的最大值
if (sum + nums[i]> mid) //尝试。//找出最大的left。其中最好的方式是将其分为 [7,2,5] 和 [10,8]。因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。一共有四种方法将 nums 分割为 2 个子数组。//找出左右的尝试范围。个子数组各自和的最大值最小。,你需要将这个数组分成。给定一个非负整数数组。//找第一个大于mid。个非空的连续子数组。原创 2022-11-17 07:38:44 · 158 阅读 · 0 评论 -
652. 寻找重复的子树
对于同一类的重复子树,你只需要返回其中任意。给你一棵二叉树的根节点。原创 2022-11-08 07:01:34 · 117 阅读 · 0 评论 -
652. 寻找重复的子树
对于同一类的重复子树,你只需要返回其中任意。给你一棵二叉树的根节点。原创 2022-11-08 06:58:38 · 53 阅读 · 0 评论 -
652. 寻找重复的子树
对于同一类的重复子树,你只需要返回其中任意。给你一棵二叉树的根节点。原创 2022-11-08 06:37:30 · 90 阅读 · 0 评论 -
710. 黑名单中的随机数
/ 返回0,任何[0,1,4,6]的整数都可以。注意,对于每一个pick的调用,// 0、1、4和6的返回概率必须相等(即概率为1/4)。/保证0-wsize 都是白名单,如果里面有黑名单的映射到wsize-n的白名单中。范围内的任意整数中选取一个。//遍历两次黑名单,原创 2022-11-04 06:46:03 · 233 阅读 · 0 评论 -
710. 黑名单中的随机数
/ 返回0,任何[0,1,4,6]的整数都可以。注意,对于每一个pick的调用,// 0、1、4和6的返回概率必须相等(即概率为1/4)。/保证0-wsize 都是白名单,如果里面有黑名单的映射到wsize-n的白名单中。范围内的任意整数中选取一个。//遍历两次黑名单,原创 2022-11-04 06:43:18 · 194 阅读 · 0 评论 -
380. O(1) 时间插入、删除和获取随机元素
int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true;bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true;// 由于 2 是集合中唯一的数字,getRandom 总是返回 2。集合现在包含 [2]。// 返回 false ,表示集合中不存在 2。// 2 已在集合中,所以返回 false。原创 2022-10-28 07:39:51 · 102 阅读 · 0 评论 -
81 · 寻找数据流的中位数
4,5,1,3], [4,5,1,3,2], [4,5,1,3,2,6] 和 [4,5,1,3,2,6,0] 的中位数是 3。本题的中位数是指将所有数字排序后得到数组的中间值,如果有数组。微信添加【jiuzhang0607】备注【Amazon】领取。[4], [4,5] 和 [4,5,1] 的中位数是 4,[1,2,3] 和 [1,2,3,4] 的中位数是 2,《Amazon高频题礼包》刷完上岸率翻倍![1] 和 [1,2] 的中位数是 1,[1,2,3,4,5] 的中位数是 3。4轮面试3轮遇原题!原创 2022-10-21 07:13:53 · 202 阅读 · 0 评论 -
1109. 航班预订统计
航班编号 1 2 3 4 5。预订记录 3 : 25 25 25 25。总座位数: 10 55 45 25 25。因此,answer = [10,55,45,25,25]预订记录 2 : 20 20。,里面的元素是每个航班预定的座位总数。因此,answer = [10,25]预订记录 1 : 10 10。预订记录 1 : 10 10。预订记录 2 : 15。总座位数: 10 25。原创 2022-10-19 06:49:33 · 215 阅读 · 0 评论 -
316. 去除重复字母
/20220928 新字符比栈顶小,栈顶字符在后面还有,删除栈顶字符。,请你去除字符串中重复的字母,使得每个字母只出现一次。(要求不能打乱其他字符的相对位置)。原创 2022-09-28 07:37:22 · 199 阅读 · 0 评论 -
1312. 让字符串成为回文串的最少插入次数
字符串 "zzazz" 已经是回文串了,所以不需要做任何插入操作。字符串可变为 "mbdadbm" 或者 "mdbabdm"。插入 5 个字符后字符串变为 "leetcodocteel",每一次操作你都可以在字符串的任意位置插入任意字符。「回文串」是正读和反读都相同的字符串。原创 2022-09-16 07:02:16 · 295 阅读 · 0 评论 -
653 · 添加运算符
/把上一个数据处理,和回溯。的字符串和一个目标值,返回在数字之间添加了。之后所有能得到目标值的情况。原创 2022-08-25 07:28:19 · 179 阅读 · 0 评论 -
884 · 寻找排列
是由一个特殊的整数数组生成的。这个数组含有从1到n(n是加密签名的长度加1)的所有数字,并且每个数字只出现一次。举例来说,加密签名"DI"可以有数组[2,1,3]或者[3,1,2]生成,但是不能由数组[3,2,4]或者[2,1,3,4]生成。[3,2,4]和[2,1,3,4]都不能生成"DI"这个特定的加密签名。'D'表示两个数字是递减关系,'I'表示两个数字是递增关系。的[1,2,...n]的最小字典序的排列。现在,给你一个由字符'D'和'I'构成的。...原创 2022-07-18 07:01:36 · 128 阅读 · 0 评论 -
427 · 生成括号
给定 n,表示有 n 对括号, 请写一个函数以将其生成所有的括号组合,并返回组合结果。一起战拖呀!微信加【jiuzhang0607】备注【战拖】即可进入官方刷题群,团战offer!样例样例 1:样例 2: vector generateParenthesis(int n) { // write your code here vector vec; vector ret; vector...原创 2022-07-07 06:53:24 · 78 阅读 · 0 评论 -
740 · 零钱兑换 2
给出不同面值的硬币以及总金额. 试写一函数来计算构成该总额的组合数量. 你可以假设每一种硬币你都有无限个.一起战拖呀!微信加【jiuzhang0607】备注【战拖】即可进入官方刷题群,团战offer!你可以做出以下假设:0 ...原创 2022-07-05 07:29:21 · 97 阅读 · 0 评论 -
796 · 开锁
你面前有一个有四个圆形轮子的锁。每个轮子有10个槽:,,,,,,,,,。轮子可以自由旋转并环绕:例如,我们可以把变成,或者变成。每个动作包括转动一个轮子一个槽。锁最初是开始的,这是一个表示四个轮子状态的字符串。你被给了一个的列表,意思是如果锁显示了这些代码中的任何一个,锁的轮子将停止转动,你将无法打开它。给定一个表示将解锁锁的轮子的值的,返回打开锁所需要的最小总次数,如果不可能,则返回-1。一起战拖呀!微信加【jiuzhang0607】备注【战拖】即可进入官方刷题群,团战offer!1.死锁的列表长度原创 2022-07-01 07:11:38 · 129 阅读 · 0 评论 -
857 · 最小的窗口子序列
算给定字符串和,在字符串中找到最小(连续的)子字符串(窗口),使得是的子序列。如果中没有包含中的所有字符的窗口,则返回空字符串。如果有多个这样的最小长度窗口,则返回一个起点编号最小的。样例样例 1:样例 2: string minWindow(string &s, string &t) { // Write your code here int targetSize = t.length(); string ret = ""; int target原创 2022-06-17 07:37:25 · 196 阅读 · 0 评论 -
389 · 判断数独是否合法
请判定一个数独是否有效。该数独可能只填充了部分数字,其中缺少的数字用 表示。背完这套刷题模板,真的不一样!北大计院令狐冲15年刷题经验总结《算法小抄模板Cheat Sheet》助你上岸!微信添加【jiuzhang15】备注【Cheat Sheet】领取一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。什么是 ?样例样例1:样例 2: bool isValidSudoku(vector &board){ //行 vec...原创 2022-06-08 06:56:22 · 394 阅读 · 0 评论 -
363 · 接雨水
描述给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。微信加 jiuzhang15 发送验证信息【国内大厂】领字节、阿里、百度等最新高频题样例样例 1:输入: [0,1,0]输出: 0样例 2:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6挑战O(n) 时间, O(1) 空间O(n) 时间, O(n) 空间也可以接受int trapRainWater原创 2022-03-14 07:34:38 · 91 阅读 · 0 评论 -
119 · 编辑距离
描述给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你可进行三种操作:插入一个字符 删除一个字符 替换一个字符微信加 jiuzhang15 发送验证信息【国内大厂】领字节、阿里、百度等最新高频题len(word1),len(word2)<=500len(word1), len(word2) <= 500len(word1),len(word2)<=500样例样例 1:输入:word1 = "horse原创 2022-03-07 07:28:48 · 144 阅读 · 0 评论 -
762 · 最长公共子序列 II
描述给定两个序列 P 和 Q 。你可以对这对 P 这个序列修改不超过 k 个元素到任意的值,并要求两个修改后序列的最长公共子序列最长。微信加 jiuzhang15 发送验证信息【国内大厂】领字节、阿里、百度等最新高频题样例样例 1:输入:[8,3][1,3]1输出:2解释:把8变成1,公共子序列为[1,3]样例 2:输入:[1, 2, 3, 4, 5][5, 3, 1, 4, 2]1输出:3int longestCommonS原创 2022-03-02 07:35:50 · 241 阅读 · 0 评论 -
838 · 子数组和为K
描述给定一个整数数组和一个整数k,你需要找到连续子数列的和为k的总个数。微信加 jiuzhang15 发送验证信息【838】领最新大厂高频题样例样例1输入: nums = [1,1,1] 和 k = 2输出: 2解释:子数组 [0,1] 和 [1,2]样例2输入: nums = [2,1,-1,1,2] 和 k = 3输出: 4解释:子数组 [0,1], [1,4], [0,3] and [3,4]int subarraySumEqualsK(原创 2022-02-21 07:36:14 · 8410 阅读 · 0 评论 -
1232 · 爆破气球的最小箭头数
描述在二维空间中有许多球形气球。 对于每个气球,提供的输入是水平直径的起点和终点坐标。 由于它是水平的,因此y坐标无关紧要,因此直径的起点和终点的x坐标就足够了。 起点总是小于终点。 最多将有10^4个气球。可以沿x轴从不同点垂直向上发射箭头。 如果xstart≤x≤xend,则坐标为xstart和xend的气球被在x处发射的箭头戳爆。 可以发射的箭头数量没有限制。 一次射击的箭头一直无限地向上移动。 问题是要找到戳破所有气球的最小发射箭头数。样例1输入:[[10,16],.原创 2022-02-15 07:10:00 · 94 阅读 · 0 评论 -
1242 · 无重叠区间
描述给定一些区间,找到需要移除的最小区间数,以使其余的区间不重叠。可以假设区间的终止点一定比起始点大。 区间[1,2]和[2,3]虽然边缘重合,但是它们并未重叠。样例样例1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: [1,3] 被移除后,剩下的区间将不再重叠。样例2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 需要将两个 [1,2] 移除使得剩下的区间不重合。样例3:原创 2022-02-15 06:50:06 · 111 阅读 · 0 评论 -
76 · 最长上升子序列
描述给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。最长上升子序列的定义:最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的子序列,这种子序列不一定是连续的或者唯一的。https://en.wikipedia.org/wiki/Longest_increasing_subsequence样例样例 1:输入:nums = [5,4,1,2,3]输出:3解释:LIS 是 [1,2,3]样例 2:.原创 2022-01-21 06:54:44 · 51 阅读 · 0 评论 -
384 · 最长无重复字符的子串
描述给定一个字符串,请找出其中无重复字符的最长子字符串。微信加 jiuzhang15 回【384】领最新大厂高频题样例样例 1:输入: "abcabcbb"输出: 3解释: 最长子串是 "abc".样例 2:输入: "bbbbb"输出: 1解释: 最长子串是 "b".挑战O(n) 时间复杂度int lengthOfLongestSubstring(string &s) { // write your code he...原创 2022-01-14 07:25:26 · 3567 阅读 · 0 评论 -
1420 · 最小覆盖子串II
描述给你一个字符串 S、一个字符串 T,S是循环的,请在字符串 S 里面找出:包含 T 所有字母的最小子串。如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。样例示例1:输入: S = "abcdc"T = “da”输出: "dca"解释:你可以将S旋转成 "bcdca",因此你的最小覆盖子串就是“dca”示例2:输入:S = "ADOBECODEBANC"T = "DAOC"输出: "CAD原创 2022-01-13 07:28:17 · 3719 阅读 · 0 评论 -
278 · 绘制填充
众所周知,在画图软件中,存在一种名为“填充”的功能。“填充”功能可以在你点击鼠标后,将一块拥有相同颜色的区域完全被你选中的颜色覆盖,如下图:现在,你将实现一个算法来模拟这个功能。你将得到一个二维数组board,以及三个整数x,y,newColor。board[i][j] 代表画板第i行第j列的像素点的颜色,不同的颜色将用不同的整数表示。x与y代表你将要点击画板上第x行第y列的像素点,newColor则代表你将用于“填充”的颜色。你需要直接在原数组board上进行操作,评测程序将检查数组boa原创 2021-12-15 06:43:49 · 396 阅读 · 0 评论 -
15 · 全排列
描述给定一个数字列表,返回其所有可能的排列。你可以假设没有重复数字。样例样例 1:输入:列表 = [1]输出:[ [1]]样例 2:输入:列表 = [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]void backtrace(vector<vector<int>>&原创 2021-12-13 07:25:54 · 571 阅读 · 0 评论 -
189. 轮转数组
给你一个数组,将数组中的元素向右轮转 k个位置,其中k是非负数。示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]示例2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释: 向右轮转 1 步...原创 2021-12-02 07:19:23 · 79 阅读 · 0 评论 -
323 · 字符串游戏
Alice与Bob在一起玩一个游戏。现在有一个字符串s,每个人可以选择字符串中的某一个区间和一种字符,删除这个区间内的所有该字符(需要删除字符的数量至少为1)。从Alice开始,Alice与Bob轮流进行这个操作,若在某个玩家删除前,字符串已经为空,则该玩家获胜。假设Alice和Bob都会按照其最优的解法删除,Alice想知道,她是否可以获胜。1≤len(s)≤100 0001 \leq len(s) \leq 100\,0001≤len(s)≤100000样例样例1:输入原创 2021-10-26 07:17:39 · 476 阅读 · 0 评论 -
319 · 方阵排队
算法困难通过率43%题目给定一个长度为N的数组height代表N个人的身高请你选出一部分人组成方阵(即矩阵的行数与列数相同),并且每一行的人的身高差不超过2。请问最多能选取多少人参加方阵1≤N≤1051 \leq N \leq 10^51≤N≤1051≤height[i]≤1091 \leq height[i] \leq 10^91≤height[i]≤109样例输入:[2,5,4,5]输出:4解释:可以组成 [[2,4],[5,5]]这样的方阵输入...原创 2021-10-21 07:31:56 · 374 阅读 · 0 评论 -
514. 自由之路
电子游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串ring,表示刻在外环上的编码;给定另一个字符串key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转 ring 以使key的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完key中的所有字符。旋转ring拼出 ...原创 2021-10-01 08:42:12 · 106 阅读 · 0 评论 -
247 · 线段树查询 II
对于一个数组,我们可以对其建立一棵 线段树, 每个结点存储一个额外的值 count 来代表这个结点所指代的数组区间内的元素个数. (数组中的某些位置可能没有元素)实现一个 query 的方法,该方法接受三个参数 root, start 和 end, 分别代表线段树的根节点和需要查询的区间,找到数组中在区间[start, end]内的元素个数。为了能更好地理解这道题,你最好先完成线段树的构造和线段树的查询样例样例 1:输入:"[0,3,count=3][0,1,count=1][2,3,co原创 2021-05-18 09:19:35 · 88 阅读 · 0 评论 -
240 · 程序检查
240 · 程序检查有一种编程语言,只有以下五种命令,每种命令最多有两个参数,请检查给定的程序是否 可能 无限循环。这些命令分别是: label <string>:声明一个标签,参数是一个字符串,且每个标签只声明一次。 goto <string>:跳转到一个标签,并从标签处开始按顺序执行程序。 halt:停机,程序终止。 print <string>:打印一个字符串,并执行下一个命令。 gotorand <labe...原创 2021-05-17 08:45:41 · 239 阅读 · 0 评论 -
203 · 线段树的修改
对于一棵 最大线段树, 每个节点包含一个额外的 max 属性,用于存储该节点所代表区间的最大值。设计一个 modify 的方法,接受三个参数 root、 index 和 value。该方法将 root 为根的线段树中 [start, end] = [index, index] 的节点修改为新的 value ,并确保在修改后,线段树的每个节点的 max 属性仍然具有正确的值。在做此题前,最好先完成线段树的构造和 线段树查询这两道题目。样例样例 1:输入:"[1,4,max=3][1,2...原创 2021-05-12 08:30:01 · 77 阅读 · 0 评论 -
202 · 线段树的查询
对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值。为SegmentTree设计一个 query 的方法,接受3个参数root, start和end,根据给定的线段树根,找出区间[start,end]中的最大值。在做此题之前,请先完成 线段树构造 这道题目。样例样例 1:输入:"[0,3,max=4][0,1,max=4][2,3,max=3][0,0,max=1][1,1原创 2021-05-11 08:15:31 · 72 阅读 · 0 评论