
算法题目
文章平均质量分 74
算法题目解答分享
一岁就可帅-
那些在暗处执拗生长的花,终有一日会馥郁传香
展开
-
【算法】过桥
接下来一行n个数a[i](1≤|a[i]|≤2000)表示浮块上的数字。1跳到2,1s 2跳到4,1s 共2s。第一行一个数n(2≤n≤2000)输出一行,表示对应的答案。原创 2024-05-31 21:49:07 · 1381 阅读 · 0 评论 -
【算法】宵暗的妖怪
值得注意的是,若取两段进行吞噬,反而最多只能获得6的饱食度,并不是最大的。选择[2,4,1]和[4,2,1]这两段即可。饱食度为4+2=6。选择[1,7,2]这一段即可。一个正整数,代表最终饱食度的最大值。原创 2024-05-31 21:13:08 · 579 阅读 · 0 评论 -
【算法】MT2 棋子翻转
在 4x4 的棋盘上摆满了黑白棋子,黑白两色棋子的位置和数目随机,其中0代表白色,1代表黑色;左上角坐标为 (1,1) ,右下角坐标为 (4,4)。给定两个数组 A 和 f ,分别代表 初始棋盘 和 哪些要进行翻转的位置(x,y) ,请返回经过所有翻转操作后的棋盘。现在依次有一些翻转操作,要对以给定翻转坐标(x,y)(也即第x行第y列)为中心的上下左右四个棋子的颜色进行翻转。原创 2024-05-31 20:01:37 · 684 阅读 · 0 评论 -
【算法】最少的完全平方数
给定一个正整数n,请找出最少个数的完全平方数,使得这些完全平方数的和等于n。完全平方指用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。例如:1,4,9,和16都是完全平方数,但是2,3,5,8,11等等不是原创 2024-05-29 20:51:47 · 1094 阅读 · 0 评论 -
【算法】dd爱转转
接下来n行,每行n个数,描述矩阵,其中数字范围为[1,2000]接下来q行,每行一个数x(x=1或x=2),描述每次询问。一下来一行一个数q(1≤q≤100000),表示询问次数。读入一个n∗n的矩阵,对于一个矩阵有以下两种操作。第一行一个数n(1≤n≤1000),表示矩阵大小。n行,每行n个数,描述操作后的矩阵。给出q个操作,输出操作完的矩阵。1:顺时针旋180°。原创 2024-05-28 20:12:09 · 655 阅读 · 0 评论 -
【算法】Angelic Jelly天使果冻
天使想知道前 x 个果冻中,美味度第二大的果冻有多少美味度?注:如果最大的数有两个以上,默认第二大的等于最大的。例如, [2,3,4,2,4]这个序列,第二大的数是4。输出 q 行,每行一个正整数,代表一次询问,输出前x 个果冻中美味度第二大的值。数据范围:1≤q≤1e5,1≤ai≤1e9,2≤x≤n≤1e5。第 i 个果冻的美味度是 ai。接下来的 q 行,每行一个正整数 x ,代表一次询问。前2个数,第二大的是1。前3个数,第二大的是2。前4个数,第二大的是3。前5个数,第二大的是5。原创 2024-05-28 19:48:16 · 628 阅读 · 0 评论 -
【算法】合并k个已排序的链表
数据范围:节点总数 0≤𝑛≤50000≤n≤5000,每个节点的val满足 ∣𝑣𝑎𝑙∣原创 2024-05-27 18:49:52 · 474 阅读 · 0 评论 -
【C++】旋转字符串——精准与否,就是屠宰和手术的区别
给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(可以为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’切割换位后得到‘zanyou’和B相同,返回true。再如:如果A=‘abcd’,B=‘abcd’,A切成‘abcd’和''(空串),换位后可以得到B,返回true。:如果A分割开转换位置可以拼成B,那么如果两个A直接合并,一定中间有个B。原创 2024-05-27 17:27:44 · 736 阅读 · 0 评论 -
【C++】牛客 ——DP36 abb
leafee 拿到了一个只含有小写字母的字符串,她想知道有多少个 "abb" 型的子序列?贡献值可以理解为在这以前区间有多少个 _ x (假设现在 i 位置字符为x)leafee 最近爱上了 abb 型语句,比如“叠词词”、“恶心心”第二行一个长度为 𝑛n 的字符串(只包含小写字母)共有1个abb,3个acc,4个bcc。"abb" 型的子序列个数。第一行一个正整数 𝑛n。原创 2024-05-26 19:58:08 · 771 阅读 · 0 评论 -
【C++】牛客——HJ52 计算字符串的编辑距离
Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。编辑距离的算法是首先由俄国科学家 Levenshtein 提出的,故又叫 Levenshtein Distance。把这个操作所需要的次数定义为两个字符串的距离。数据范围:给定的字符串长度满足 1≤𝑙𝑒𝑛(𝑠𝑡𝑟)≤1000 1≤len(str)≤1000。给定任意两个字符串,写出一个算法计算它们的编辑距离。每组用例一共2行,为输入的两个字符串。每组用例输出一行,代表字符串的距离。原创 2024-05-24 20:31:52 · 640 阅读 · 0 评论 -
【C++】牛客——OR64 求和
输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来。按每个组合的字典序排列输出,每行输出一种组合。每个测试输入包含2个整数,n和m。原创 2024-05-24 19:26:00 · 410 阅读 · 0 评论 -
【C++】牛客——美团 奇数位丢弃
对于一个由 0..n 的所有数按升序组成的序列,我们要进行一些筛选,每次我们丢弃去当前所有数字中第奇数位个的数。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。数据范围: 1≤𝑛≤1000 1≤n≤1000 ,本题有多组输入。每组数据一行一个数字,为题目中的n(n小于等于1000)。一行输出最后剩下的数字。原创 2024-05-24 17:31:28 · 769 阅读 · 0 评论 -
【C++】牛客 ——NC138 矩阵最长递增路径
你需要在矩阵中找到一条最长路径,使这条路径上的元素是递增的。:通过DFS遍历矩阵的每个单元格,从每个单元格开始搜索最长的递增路径。数据范围:1≤𝑛,𝑚≤10001≤n,m≤1000,0≤𝑚𝑎𝑡𝑟𝑖𝑥[𝑖][𝑗]≤10000≤matrix[i][j]≤1000。1. 对于每个单元格,你可以往上,下,左,右四个方向移动。例如:当输入为[[1,2,3],[4,5,6],[7,8,9]]时,对应的输出为5,方向数组包括四个方向:上、下、左、右。,用于存储从每个单元格开始的最长递增路径长度。原创 2024-05-23 21:19:08 · 1013 阅读 · 0 评论 -
【C++】牛客——kotori和迷宫
kotori在一个n*m迷宫里,迷宫的最外层被岩浆淹没,无法涉足,迷宫内有k个出口。她想知道有多少出口是她能到达的,最近的出口离她有多远?若有出口可以抵达,则输出2个整数,第一个代表kotori可选择的出口的数量,第二个代表kotori到最近的出口的步数。'k'代表kotori开始的位置,'.'代表道路,'*'代表墙壁,'e'代表出口。可供选择坐标为[4,7]和[6,8],到kotori的距离分别是8和7步。第一行为两个整数n和m,代表迷宫的行和列数 (1≤n,m≤30)若没有出口可以抵达,则输出-1。原创 2024-05-23 20:50:30 · 624 阅读 · 0 评论 -
【C++】牛客——ISBN号码
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X…共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。原创 2024-05-23 18:43:58 · 893 阅读 · 0 评论 -
【C++】牛客——JZ38 字符串的排列
例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。如果希望保留原始顺序,并且不介意在内部对元素进行排序,那么第二种方法可能更合适。中存的是所有可能的情况包括重复情况,所以我们要想办法去重操作。要求:空间复杂度 𝑂(𝑛!),时间复杂度 𝑂(𝑛!两种方法的区别:不关心元素的顺序,那么使用。返回["ba","ab"]也是正确的。原创 2024-05-22 20:56:30 · 690 阅读 · 0 评论 -
【C++】牛客——WY6 合唱团
每个测试数据的第一行包含一个整数 n (1原创 2024-05-21 20:10:12 · 1185 阅读 · 0 评论 -
【C++】牛客——活动安排
给定𝑛个活动,每个活动安排的时间为[𝑎𝑖,𝑏𝑖)。求最多可以选择多少个活动,满足选择的活动时间两两之间没有重合。我们可以把时间对存在 pair中,把 pair 放在优先级队列中。接下来的𝑛n行,每行输入两个整数 𝑎𝑖,𝑏𝑖。写一个比较 pair 的仿函数,用小根堆比较方式,把最小的放在堆顶。第一行输入一个整数 𝑛。输出一行一个整数,表示最多可选择的活动数。这样我们每次开始时间或结束时间最小的一个。,表示第 𝑖 个活动的时间。,表示可选活动个数。原创 2024-05-21 18:58:38 · 704 阅读 · 0 评论 -
【C++】牛客——BC157 素数回文
备注。原创 2024-05-21 17:37:45 · 541 阅读 · 0 评论 -
【C++】牛客——DP59 数位染色
她可以将其中一些数位染成红色。然后她想让所有染红的数位数字之和等于没染色的数位数字之和。我们可以对任意的数选择或者不选择,看是否能够凑出总数组和的一半。如果小红能按要求完成染色,输出"Yes"。将3、4、7染成红色即可,这样3+4+7=1+2+5+6。首先我们可以把这个x的每一位都保存下来放进一个数组中。,我们就需要在这组数中任意选择任意数相加得到。因为要两组数的和相等,所以如果数组的和为。她不知道能不能达成目标。一个正整数 x ,1≤𝑥≤10^18。,肯定不满足,所以直接输出 No。原创 2024-05-20 19:34:58 · 439 阅读 · 0 评论 -
【C++】牛客——小红的口罩
,每次重复使用时,该口罩的不舒适度会翻倍!第一行输入两个正整数 n 和 k ,分别代表口罩的总数、以及小红最多能忍受的不舒适度总和。小红想知道,自己在不舒适度总和不超过 k 的情况下,最多能用现有的口罩度过多少天?可以证明,无论怎样分配,都无法度过6天且不舒适度总和不超过30。小红每个口罩戴一天的初始不舒适度为 ai。第五天用第二个口罩,不舒适度为12。第一天用第一个口罩,不舒适度为2。第二天用第一个口罩,不舒适度为4。第三天用第二个口罩,不舒适度为3。第四天用第二个口罩,不舒适度为6。原创 2024-05-20 19:33:26 · 563 阅读 · 0 评论 -
【C++】牛客——春游
首先我们可以计算双人船和三人船中每个玩家的花费,我们要在尽可能的情况下选择单价少的船优先安排。如果剩下一个人,那么就考虑是给他新添一艘船或者拿掉一个a,和之前2个人一起去坐3人船。接下来 T 行每行给出三个正整数𝑛,𝑎,𝑏,1≤𝑛,𝑎,𝑏≤10^9 ,含义如题。说明我们要先尽可能安排三人船坐满,那么与上面类似,我们可能留下。三人船最多坐三人,也可以坐两人或者一人,收费b元。如果恰n%2==0,那就不需要额外安排船,盼望着,盼望着,东风来了,春天脚步近了。双人船最多坐两人,也可以坐一人,收费a元。原创 2024-05-20 17:03:59 · 1492 阅读 · 0 评论 -
【C】leetcode力扣—— 142. 环形链表 II
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。这个问题在之前的环形链表Ⅰ文章中已经详细分析过了。:链表中有一个环,其尾部连接到第二个节点。:链表中有一个环,其尾部连接到第一个节点。如果链表中有某个节点,可以通过连续跟踪。这时我们就解决了找环的入口的问题!来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。:返回索引为 1 的链表节点。:返回索引为 0 的链表节点。如果链表无环,则返回。给定一个链表的头节点。,则在该链表中没有环。原创 2024-04-02 08:50:44 · 816 阅读 · 0 评论 -
【C】leetcode力扣—— 141. 环形链表Ⅰ
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。:链表中有一个环,其尾部连接到第二个节点。:链表中有一个环,其尾部连接到第一个节点。如果链表中有某个节点,可以通过连续跟踪。但是如果有环这个代码就会成为一个死循环,我们的问题是如何判断一个链表是否带环。如果链表不带环那么链表的尾节点的。如果链表中存在环 ,则返回。这时两个指针都进入环中,并且。,判断链表中是否有环。给你一个链表的头节点。原创 2024-04-01 14:49:39 · 1112 阅读 · 0 评论 -
【C】盛最多水的容器(双指针)
给定一个长度为 n 的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。:你不能倾斜容器。原创 2024-03-25 20:44:47 · 1095 阅读 · 1 评论