算法
文章平均质量分 66
霜序0.2℃
风信子
展开
-
力扣 1539. 第 k 个缺失的正整数
题目给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。请你找到这个数组里第 k 个缺失的正整数。示例 1:输入:arr = [2,3,4,7,11], k = 5输出:9解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,…] 。第 5 个缺失的正整数为 9 。示例 2:输入:arr = [1,2,3,4], k = 2输出:6解释:缺失的正整数包括 [5,6,7,…] 。第 2 个缺失的正整数为 6 。提示:1 <= arr.length <=原创 2022-04-03 21:40:35 · 466 阅读 · 0 评论 -
力扣 33. 搜索旋转排序数组 [二分]
题目整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个整数原创 2022-04-03 20:21:37 · 271 阅读 · 0 评论 -
441. 排列硬币 [二分]
题目你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。示例 1:输入:n = 5输出:2解释:因为第三行不完整,所以返回 2 。示例 2:输入:n = 8输出:3解释:因为第四行不完整,所以返回 3 。提示:1 <= n <= 231 - 1解释与代码二分解法x*(x+1)/2就是1到x的累加和,这样可以用原创 2022-04-03 17:50:50 · 366 阅读 · 0 评论 -
力扣 744. 寻找比目标字母大的最小字母 [二分]
题目给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循环出现的。举个例子:如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’示例 1:输入: letters = [“c”, “f”, “j”],target = “a”输出: “c”示例 2:输入: letters = [“c”,“f”,“j”], tar原创 2022-04-03 17:01:29 · 281 阅读 · 0 评论 -
Acwing 4305 斐波那契字符串
4305斐波那契字符串题目斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、……1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下递推的形式定义:F(0)=1,F(1)=1,F(n)=F(n−1)+F(n−2)(n≥2,n∈N∗)F(0)=1,F(1)=1,F(n)=F(n−1)+F(n−2)(n≥2,n∈N∗)。如果一个数出现在斐波那契数列之中,那么我们就称这个数为斐波那契数。现在,给定一个整数 nn,请你构造一个长度为 nn 的字符串 s1s2…原创 2022-03-25 15:32:18 · 217 阅读 · 0 评论 -
13届蓝桥杯线上准备(java)
13届蓝桥杯线上准备(java)比赛手册说很清楚了,我就讲一下注意点下载蓝桥杯官网的ecplise可以用API帮助文档文件名必须是Main.java(即类名是Main),且不带包名快捷键格式化快捷键:Ctrl+Shift+F输出:sysout对应IDEA的sout出现main函数:main对应IDEA的psvm运行最后一次执行的程序:Ctrl+F11ecplise基本设置打开自动补全Windows->Preferences->Java->Editor->C原创 2022-03-25 15:30:36 · 3783 阅读 · 1 评论 -
力扣 1688比赛中的配对次数
题目给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进入下一轮。返回在比赛中进行的配对次数,直到决出获胜队伍为止。示例 1:输入:n = 7输出:6解释:比赛详情:第 1 轮:队伍数 =原创 2022-03-24 19:38:46 · 482 阅读 · 2 评论 -
力扣 1380矩阵中的幸运数
题目给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。幸运数是指矩阵中满足同时下列两个条件的元素:在同一行的所有元素中最小在同一列的所有元素中最大示例 1:输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]输出:[15]解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。示例 2:输入:matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]输出原创 2022-03-24 19:37:53 · 132 阅读 · 0 评论 -
力扣 1219黄金矿工
题目你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。为了使收益最大化,矿工需要按以下规则来开采黄金:每当矿工进入一个单元,就会收集该单元格中的所有黄金。矿工每次可以从当前位置向上下左右四个方向走。每个单元格只能被开采(进入)一次。不得开采(进入)黄金数目为 0 的单元格。矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止转载 2022-03-24 19:37:21 · 150 阅读 · 0 评论 -
力扣 1189“气球” 的最大数量
题目给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”。示例 1:输入:text = “nlaebolko”输出:1示例 2:输入:text = “loonbalxballpoon”输出:2示例 3:输入:text = “leetcode”输出:0提示:1 <= text.length <= 10^4text原创 2022-03-24 19:36:46 · 161 阅读 · 0 评论 -
力扣 258各位相加
题目给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。示例 1:输入: num = 38输出: 2解释: 各位相加的过程为:38 --> 3 + 8 --> 1111 --> 1 + 1 --> 2由于 2 是一位数,所以返回 2。示例 1:输入: num = 0输出: 0提示:0 <= num <= 231 - 1进阶:你可以不使用循环或者递归,在 O(1) 时间复杂度内解决这个问题吗?来源:力扣(Leet原创 2022-03-24 19:36:14 · 259 阅读 · 3 评论 -
力扣 206反转链表
题目给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000解释与代码将next指针指向上一个结点即迭代做法class Solution {public: ListNo原创 2022-03-24 19:35:42 · 1445 阅读 · 0 评论 -
力扣 200. 岛屿数量
题目200. 岛屿数量难度中等1603收藏分享切换为英文接收动态反馈给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0",原创 2022-03-24 19:35:15 · 215 阅读 · 0 评论 -
力扣 66 加一
题目给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]提示:1 <= dig原创 2022-03-24 19:34:08 · 132 阅读 · 0 评论 -
力扣 19删除链表的倒数第 N 个结点
题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <= n <= sz解释与代码方法有三种:最普通的原创 2022-03-24 19:33:29 · 1456 阅读 · 0 评论 -
力扣 3无重复字符的最长子串
题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个原创 2022-03-24 19:32:54 · 145 阅读 · 0 评论 -
力扣 1380矩阵中的幸运数
题目给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。幸运数是指矩阵中满足同时下列两个条件的元素:在同一行的所有元素中最小在同一列的所有元素中最大示例 1:输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]输出:[15]解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。示例 2:输入:matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]输出原创 2022-02-15 15:40:24 · 182 阅读 · 0 评论 -
acwing 1715 桶列表
题目Farmer John 正在考虑改变他给奶牛挤奶的时候分配牛奶桶的方式。他认为这最终能使得他使用数量更少的桶,然而他不清楚具体是多少,请帮助他!Farmer John 有 NN 头奶牛,方便起见编号为 1…N1…N。第 ii 头奶牛需要从时刻 sisi 到时刻 titi 之间挤奶,并且挤奶过程中需要用到 bibi 个桶。多头奶牛可能在同一时刻都在挤奶;每个桶在每个时刻只能供一头奶牛使用。也就是说,第 ii 头奶牛在时刻 sisi 到时刻 titi 之间挤奶时,如果用到了某个桶,则该桶在这段时原创 2022-02-08 12:00:59 · 238 阅读 · 0 评论 -
力扣 3. 无重复字符的最长子串
题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个原创 2022-02-05 22:59:33 · 251 阅读 · 0 评论 -
力扣 1219. 黄金矿工
题目你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。为了使收益最大化,矿工需要按以下规则来开采黄金:每当矿工进入一个单元,就会收集该单元格中的所有黄金。矿工每次可以从当前位置向上下左右四个方向走。每个单元格只能被开采(进入)一次。不得开采(进入)黄金数目为 0 的单元格。矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止。示例 1:原创 2022-02-05 16:24:35 · 136 阅读 · 0 评论 -
AcWing 1762. 牛的洗牌
题目农夫约翰坚信快乐的奶牛会产出更多的牛奶,因此他在谷仓中安装了一个巨大的迪斯科球,并计划教他的奶牛跳舞!在查阅了一些牛的流行舞蹈后,约翰决定教他的奶牛“洗牌舞”。洗牌舞是由他的 NN 只奶牛按一定顺序排成一行,然后连续执行三次“洗牌”,每次“洗牌”都可能会使奶牛重新排序。为了让奶牛们更容易找到自己所处的位置,约翰用数字 1∼N1∼N 对一行中奶牛所在的位置进行了标记,一行中第一头奶牛处于位置 11,第二头奶牛处于位置 22,以此类推,直到位置 NN。每次“洗牌”用 NN 个数字 a1,a2,…,原创 2022-02-04 13:37:47 · 474 阅读 · 0 评论 -
力扣 1725 可以形成最大正方形的矩形数目
题目给你一个数组 rectangles ,其中 rectangles[i] = [li, wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。如果存在 k 同时满足 k <= li 和 k <= wi ,就可以将第 i 个矩形切成边长为 k 的正方形。例如,矩形 [4,6] 可以切成边长最大为 4 的正方形。设 maxLen 为可以从矩形数组 rectangles 切分得到的 最大正方形 的边长。请你统计有多少个矩形能够切出边长为 maxLen 的正方形,并返回矩形 数目 。示原创 2022-02-04 12:14:34 · 126 阅读 · 0 评论 -
力扣 2155. 分组得分最高的所有下标
题目给你一个下标从 0 开始的二进制数组 nums ,数组长度为 n 。nums 可以按下标 i( 0 <= i <= n )拆分成两个数组(可能为空):numsleft 和 numsright 。numsleft 包含 nums 中从下标 0 到 i - 1 的所有元素**(包括** 0 和 i - 1 ),而 numsright 包含 nums 中从下标 i 到 n - 1 的所有元素**(包括** i 和 n - 1 )。如果 i == 0 ,numsleft 为 空 ,而 num原创 2022-02-03 16:03:38 · 116 阅读 · 0 评论 -
力扣 2154. 将找到的值乘以 2
题目给你一个整数数组 nums ,另给你一个整数 original ,这是需要在 nums 中搜索的第一个数字。接下来,你需要按下述步骤操作:如果在 nums 中找到 original ,将 original 乘以 2 ,得到新 original(即,令 original = 2 * original)。否则,停止这一过程。只要能在数组中找到新 original ,就对新 original 继续 重复 这一过程**。**返回 original 的 最终 值。示例 1:输入:nums =原创 2022-02-03 15:23:17 · 5870 阅读 · 0 评论 -
acwing 1776 牛的基因组学
题目农夫约翰拥有 NN 头有斑点的牛和 NN 头没有斑点的牛。他刚刚完成了牛遗传学课程,他确信奶牛上的斑点是由牛基因组突变引起的。农夫约翰花了大价钱对他的奶牛的基因组进行了测序。每个基因组都是一个由四个字符 A,C,G,TA,C,G,T 构成的长度为 MM 的字符串。当他统计得到的奶牛的基因组序列时,可以得到一个如下所示的表:(此时,N=3N=3)位置 : 1 2 3 4 5 6 7 ... M斑点牛 1: A A T C C C A ... T斑点牛 2: G A T T G C原创 2022-02-02 15:26:42 · 688 阅读 · 0 评论 -
力扣每日一题 2000 反转单词前缀
题目给你一个下标从 0 开始的字符串 word 和一个字符 ch 。找出 ch 第一次出现的下标 i ,反转 word 中从下标 0 开始、直到下标 i 结束(含下标 i )的那段字符。如果 word 中不存在字符 ch ,则无需进行任何操作。例如,如果 word = “abcdefd” 且 ch = “d” ,那么你应该 反转 从下标 0 开始、直到下标 3 结束(含下标 3 )。结果字符串将会是 “dcbaefd” 。返回 结果字符串 。示例 1:输入:word = “abcdefd”, ch原创 2022-02-02 14:58:28 · 175 阅读 · 0 评论 -
力扣每日一题 1688 比赛中的匹配次数
题目给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进入下一轮。返回在比赛中进行的配对次数,直到决出获胜队伍为止。示例 1:输入:n = 7输出:6解释:比赛详情:第 1 轮:队伍数 =原创 2022-01-31 17:53:40 · 186 阅读 · 0 评论 -
acwing 1904 奶牛慢跑
1904 奶牛慢跑题目奶牛们又出去锻炼蹄子去了!有 NN 头奶牛在无限长的单行道上慢跑,且跑步方向为坐标值增大的方向。每头奶牛在跑道上开始奔跑的位置互不相同,一些奶牛的奔跑速度可能相同,也可能不同。由于跑道是单行道,十分狭窄,奶牛们无法相互超越。当一头速度很快的牛追上另一头牛时,她必须减速至与另一头牛速度相同以免发生碰撞,并成为同一跑步小组的一员。此时,两头牛可以视为在同一点上。最终,再也没有奶牛会撞到(追上)其他奶牛了。约翰想知道在这种情况下,会剩下多少个跑步小组。输入格式第一行包含整原创 2022-01-31 17:52:36 · 239 阅读 · 0 评论 -
acwing 1884. COW
文章目录1884. COW题目输入格式输出格式数据范围输入样例:输出样例:代码与解释解法1解法2解法31884. COW题目https://www.acwing.com/problem/content/1886/奶牛贝茜在她最喜欢的牧场中发现了一块石碑,上面刻有神秘的碑文。碑文的文字似乎来自一种神秘的古代语言,可看作一个只包含 C,O,WC,O,W 三种字符的字符串。尽管贝茜无法解密该文字,但是她很欣赏 C,O,WC,O,W 按顺序构成她最喜欢的单词 COWCOW。她想知道 COWCOW 在碑原创 2022-01-31 17:52:00 · 1380 阅读 · 0 评论 -
计算机算法 期末复习个人笔记(部分)
可能的填空算法是什么算法是求解问题的一系列计算步骤算法设计要求正确性可使用性(用户友好)可读性健壮性(容错)高效率和低存储率算法特性有限性确定性可行性输入输出程序程序=数据结构+算法数据结构逻辑结构存储结构基本操作数据结构是算法的基础算法设计步骤#mermaid-svg-K6rJNIvG8TFVy5t5 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermai原创 2022-01-09 23:08:23 · 615 阅读 · 0 评论 -
Codeforces Round #753 (Div. 3) ABCDE
文章目录A. Linear KeyboardInputOutputExample代码与解释B. Odd GrasshopperInputOutputExampleNote代码与解释C. Minimum ExtractionInputOutputExample代码与解释D. Blue-Red PermutationInputOutputExampleNote代码与解释E. Robot on the Board 1InputOutputExample代码与解释跳转到->Codeforces Round原创 2021-11-03 13:34:36 · 568 阅读 · 0 评论 -
链表应用之多项式相加
题目来源:Wejudge#3988题目首先输入2个整数m和n(0<m, n<=1000000000)分别代表2个多项式的项数。然后,输入m+n行数据,前m行表示第一个多项式,后n行表示第二个多项式每行1个整数c和一个非负整数e(e>=0),分别表示多项式每一项的系数和指数(指数按升序排列)。样例输入3 41 12 33 51 0-6 11 2-3 5...原创 2020-04-03 16:34:14 · 318 阅读 · 0 评论 -
C语言单链表简单操作 以及对链表的一些疑问
单链表结点的声明链表执行时错误功能介绍main函数初始化长度为n的链表打印链表根据序号查找根据值查找根据序号寻找前驱根据值寻找前驱在位置i(从1开始)插入元素e删除位置i的元素链表的概念暂不叙述关于更多结构体初始化的问题结点的声明typedef struct LNode{ int data; //数据域 struct LNode *next; //指针...原创 2020-03-27 11:39:20 · 808 阅读 · 0 评论 -
LCS最长公共子序列 [线性dp]
LCS最长公共子序列#include<stdio.h>#include<string.h>#include<stack>#include<algorithm>using namespace std;#define N 1010int dp[N][N];char c;int main(){ char a[N]; char b[N]; scanf("%s%s",a,b); int la=strlen(a);原创 2021-07-10 11:02:48 · 96 阅读 · 0 评论 -
LIS最长上升子序列 [线性dp]
LIS最长上升子序列https://www.bilibili.com/video/BV137411B7BN?from=search&seid=10864404175908886859#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<string>#include<iostr原创 2021-07-10 11:02:08 · 107 阅读 · 0 评论 -
简单树状数组
lowbit6的二进制是110lowbit(6)就是2,是因为我们取110中从后往前数第一个1,从这个1开始然后往后取,即110中的10,10的十进制就是2例子:10010-101010011100-100两种表示方法:x&(x^(x-1))x&-x树状数组查询和修改都为log(n)的数据结构,主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值总结:支持单点修改,区间原创 2021-07-10 11:04:03 · 91 阅读 · 0 评论 -
杭电 1166 树状数组
杭电 1166#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>#include <string>#include <iostream>#include <sstream>#include <set>#include <map>#includ原创 2021-07-10 11:04:42 · 129 阅读 · 0 评论 -
acwing 99 二维前缀和例题-激光炸弹 [前缀和]
https://www.acwing.com/problem/content/101/#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<string>#include<iostream>#include<sstream>#include<set>#原创 2021-05-11 23:00:08 · 158 阅读 · 0 评论 -
2020 BNUZ 新生现场赛 题解
文章目录组合技站好队我不看月亮记忆大王李华用来签到的打牌游戏你会看天气预报吗小明的派对茅亭里看雨 切西瓜盛夏白瓷梅子汤秉烛夜游 一醉方休组合技此题将n-1个元素加1可以等价于每次让1个元素-1,多少次后所有元素相等#include <stdio.h>int main() { int t, n; int num[1010]; scanf("%d", &t); for (int i = 1; i <= t; i++) { sc原创 2020-12-05 21:42:43 · 280 阅读 · 0 评论 -
2021牛客多校训练7 I xay loves or
题目链接:https://ac.nowcoder.com/acm/contest/11258/I来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述xay loves or. He gives you x and s, you need to calculate how many positive integer y satisfy xory=sx \operatorname{or}原创 2021-08-14 18:26:43 · 124 阅读 · 0 评论