lintCode算法
文章平均质量分 66
yinhua405
努力工作
展开
-
1373. 二叉搜索子树的最大键值和
/大于左子树最大值,小于右子树最小值。键值为 2 的单节点子树是和最大的二叉搜索树。所有节点键值都为负数,和最大的二叉搜索树为空。键值为 3 的子树是和最大的二叉搜索树。二叉搜索子树的最大键值和。原创 2023-03-14 07:14:40 · 111 阅读 · 0 评论 -
95. 不同的二叉搜索树 II
请你生成并返回所有由。个节点组成且节点值从。原创 2023-02-17 07:26:17 · 392 阅读 · 0 评论 -
96. 不同的二叉搜索树
返回满足题意的二叉搜索树的种数。个节点组成且节点值从。原创 2023-02-15 07:30:03 · 179 阅读 · 0 评论 -
895. 最大频率栈
/返回 4 ,因为 4, 5 和 7 出现频率最高,但 4 是最接近顶部的。//返回 7 ,因为 5 和 7 出现频率最高,但7最接近顶部。堆栈变成 [5,7,5,4]。//返回 5 ,因为 5 出现频率最高。堆栈变成 [5,7,5,7,4]。//返回 5 ,因为 5 出现频率最高。堆栈变成 [5,7,4]。//堆栈是 [5,7,5,7,4,5]//堆栈是 [5,7,5,7,4]//堆栈是 [5,7,5,7]//堆栈是 [5,7,5]//堆栈是 [5,7]原创 2023-02-13 07:16:48 · 307 阅读 · 0 评论 -
剑指 Offer II 076. 数组中的第 k 大的数字
请注意,你需要找的是数组排序后的第。个最大的元素,而不是第。原创 2022-12-28 06:54:27 · 435 阅读 · 0 评论 -
538. 把二叉搜索树转换为累加树
树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。的新值等于原树中大于或等于。原创 2022-12-20 07:38:48 · 100 阅读 · 0 评论 -
239. 滑动窗口最大值
的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口的位置 最大值。滑动窗口每次只向右移动一位。原创 2022-12-19 07:18:00 · 352 阅读 · 0 评论 -
712. 两个字符串的最小ASCII删除和
在 "leet" 中删除 "e" 将 101[e] 加入总和。如果改为将两个字符串转换为 "lee" 或 "eet",我们会得到 433 或 417 的结果,比答案更大。结束时,两个字符串都等于 "let",结果即为 100+101+101+101 = 403。在 "sea" 中删除 "s" 并将 "s" 的值(115)加入总和。在 "delete" 中删除 "dee" 字符串变成 "let",在 "eat" 中删除 "t" 并将 116 加入总和。原创 2022-12-15 07:12:50 · 110 阅读 · 0 评论 -
583. 两个字符串的删除操作
第一步将 "sea" 变为 "ea" ,第二步将 "eat "变为 "ea"可以删除任意一个字符串中的一个字符。原创 2022-12-09 07:37:08 · 282 阅读 · 0 评论 -
1143. 最长公共子序列
是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。最长公共子序列是 "ace" ,它的长度为 3。最长公共子序列是 "abc" ,它的长度为 3。两个字符串没有公共子序列,返回 0。是这两个字符串所共同拥有的子序列。,返回这两个字符串的最长。原创 2022-12-09 07:27:09 · 201 阅读 · 0 评论 -
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 · 213 阅读 · 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 评论 -
1208 · 目标和
给定一个非负整数的列表a1,a2,...an,再给定一个目标S。两种运算,对于每一个整数,选择一个作为它前面的符号。找出有多少种方法,使得这些整数的和正好等于S。原创 2022-08-12 07:09:34 · 86 阅读 · 0 评论 -
941 · 滑动拼图
给定一个拼图板,返回所需的最少移动次数,以解决该板的状态。如果无法解决板的状态,则返回-1。与其相邻的四个方向之一的数字交换位置。时,才能说这块板存在的问题被解决了。表示,还有一块空地用。...原创 2022-08-09 07:19:39 · 296 阅读 · 0 评论 -
342 · 山谷序列
北大学霸令狐冲15年刷题经验总结的《算法小抄模板CheatSheet》助你上岸!现在想让你找所有子序列中满足山谷序列规则的最长的长度为多少?微信添加【jiuzhang0607】备注【小抄】领取。//从左到右统计递减数量。//从右到左统计递减数量。背完这套刷题模板,真的不一样!...原创 2022-07-28 07:22:54 · 150 阅读 · 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 评论 -
1169 · 字符串的排列
给定两个字符串和,如果包含的排列,则写一个函数返回true。 换句话说,第一个字符串的排列之一是第二个字符串的。一起战拖呀!微信加【jiuzhang0607】备注【战拖】即可进入官方刷题群,团战offer!样例样例1:样例2: bool checkInclusion(string &s1, string &s2) { // write your code here mapneedMap; for (auto it : s1) ...原创 2022-07-08 07:11:42 · 92 阅读 · 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 评论 -
877 · 同和分割数组
给定一个有n个整数的数组,判断是否存在满足以下条件的三元组 :定义子数组(L, R)表示原始数组从元素下标为L到R的那一段。如果存在这样的三元组,返回 ,否则返回 。样例样例 1:样例 2: bool splitArray(vector &nums) { // write your code here int size = nums.size(); vector sum(nums.size()+1,0); sum[0] = nu...原创 2022-06-15 07:08:47 · 141 阅读 · 0 评论 -
389 · 判断数独是否合法
请判定一个数独是否有效。该数独可能只填充了部分数字,其中缺少的数字用 表示。背完这套刷题模板,真的不一样!北大计院令狐冲15年刷题经验总结《算法小抄模板Cheat Sheet》助你上岸!微信添加【jiuzhang15】备注【Cheat Sheet】领取一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。什么是 ?样例样例1:样例 2: bool isValidSudoku(vector &board){ //行 vec...原创 2022-06-08 06:56:22 · 394 阅读 · 0 评论 -
1275 · 超级幂次
你的任务是计算 a^b mod 1337,其中 a 是一个正整数,b 是一个超级大的正整数,以数组的形式给出。样例样例1样例2 int mul2(int a, int b){ if (b == 0) { return 1; } int ret = 1; while (b != 1) { if (b % 2 == 0) { a = a*a % 1337;原创 2022-06-01 07:24:05 · 237 阅读 · 0 评论 -
534 · 打劫房屋 II
在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警。给定一个非负整数列表,表示每个房子中存放的钱, 算一算,如果今晚去打劫,在不触动报警装置的情况下, 你最多可以得到多少钱 。这题是House Robber的扩展,只不过是由直线变成了圈样例样例1输入:原创 2022-05-13 06:58:15 · 83 阅读 · 0 评论 -
392 · 打劫房屋
假设你是一个专业的窃贼,准备沿着一条街打劫房屋。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且当相邻的两个房子同一天被打劫时,该系统会自动报警。给定一个非负整数列表,表示每个房子中存放的钱, 算一算,如果今晚去打劫,在不触动报警装置的情况下, 你最多可以得到多少钱 。样例样例 1:输入: [3, 8, 4]输出: 8解释: 仅仅打劫第二个房子.样例 2:输入: [5, 2, 1, 3] 输出: 8解释: 抢第一.原创 2022-05-13 06:44:50 · 71 阅读 · 0 评论 -
1492 · 爱吃香蕉的珂珂
珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。1 <= piles.length <= 10^4 ...原创 2022-04-29 07:41:38 · 91 阅读 · 0 评论