自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 LeetCode 热题 100 Python3易懂题解(哈希,双指针,滑动窗口,子串)

然后遍历哈希集合,如果x-1在集合里,那么x可以直接跳过,因为不可能比从x-1更长了。最后设置y为x+1,如果y在集合里,则y再加一,最后ans为现有最大ans和当前y-x中的最大值。这是最简单的做法,即直接遍历整个列表,从第一个值开始遍历,如果从当前位置到最后位置中有和当前位置值相加为目标值的即返回这两个位置。这个就是x=1,y=2,3,4 然后最后一次4也在集合中y会再加一,这个时候y=5,所以5-1=4。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。

2025-12-18 18:31:24 1192

原创 晴问算法 动态规划(简单)

题目描述现有�个从左至右摆放着的高台(编号为从1到n),每个高台有各自的高度ℎ�。假设闯关者当前处于第�个高台,那么可以选择跳到第�+1或第�+2个高台(闯关者能够跳任意高度)。如果从第�个高台跳到第�个高台,那么将会消耗闯关者|ℎ�−ℎ�|点能量。问从第1个高台出发、到达第�个高台的过程中需要消耗的最小能量。输入描述第一行一个整数�(1≤�≤104),表示高台个数。第二行为用空格隔开的�个整数ℎ�(1≤ℎ�≤100),表示各高台的高度。输出描述一个整数,表示需要消耗的最小能量。int n;

2024-03-26 16:53:52 1597

原创 三小时速成C++(B站我头发还多还能学)笔记

c++速成笔记必看!!!!!!!!!!大家可以边看课边配合着看,重点看看代码的注释!!!!

2024-03-06 12:11:22 1689 1

原创 LeetCode 热题 100 Python3易懂题解(普通数组,矩阵)

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。6连续子数组 [4,-1,2,1] 的和最大,为 6。nums = [1]123这个太简单了,和洛谷的p1115一样,那个用c++写了题解可以去主页看。不要想得太复杂!!!

2026-03-19 12:50:06 691

原创 240. 搜索二维矩阵 II(中等)

从右上角开始遍历矩阵,因为右边一列就是每一行中最大的数。如果最右边那一列的值比目标值小,那么下移找更大的,如果大那么左移找更小的。就是直接遍历全矩阵,找到返回true,没找到返回false。:从右上角到左下角,走 m+n-1 步。:O(m+n),不是 O(mn)编写一个高效的算法来搜索。

2026-03-18 22:22:34 163 1

原创 48. 旋转图像(中等)

旋转图像,这意味着你需要直接修改输入的二维矩阵。reverse函数是指对数字内每一行进行原地反转。请你将图像顺时针旋转 90 度。顺时针旋转90度就是转置+水平镜像也就是左右翻转。逆时针旋转90度就是转置+垂直镜像也就是上下翻转。180度旋转就是水平镜像+垂直镜像。n//2是n除以2然后向下取整。使用另一个矩阵来旋转图像。

2026-03-18 20:50:16 26

原创 54.螺旋矩阵(中等)

给你一个m行n列的矩阵matrix,请按照,返回矩阵中的所有元素。主要思想是设立上下左右四个边界,根据边界打印,打印完之后边界向内收缩1,表示已打印,如果边界相遇说明打印已完成。首先在第一行开始从左到右打印,打印完第一行之后,上边界下移,也就是top加一,然后从上边界开始从上到下打印,打印完后右边界左移,然后从右边界从右到左打印,下边界上移,然后从下边界从下到上打印,一直如此循环。打印行的时候只需要看上边界是否大于下边界,如果大于就退出,表示打印完了;同样打印列的时候看左边界是否大于右边界,大于就退出。

2026-03-18 18:11:45 231

原创 73.矩阵置零(中等)

遍历metrix,如果当前位置为0,那么rz对应的这一行至True,代表这一行有0,列也一样。这里是用俩个全为false的数组存储这一行和这一列是否有0存在。最后如果这一行或者一列为true,那这个元素就置零。,则将其所在行和列的所有元素都设为。下面是使用O(m+n)的额外空间。首先想到直接复制一个一样的矩阵。的矩阵,如果一个元素为。

2026-03-18 17:22:21 186

原创 41. 缺失的第一个正数(困难)

检查:值为 x 的数是否在下标为 x-1 的位置上?如果 nums[2]已经是 3 了,就不需要交换。遍历数组,找到第一个 nums[i] ≠ i+1 的位置。如果 nums[2]不是 3,才需要交换。只处理值在 [1, n] 范围内的数字。比如:数字 3 应该在下标 2 的位置。将每个正整数 x 放到数组下标为 x-1 的位置。,请你找出其中没有出现的最小的正整数。范围 [1,2] 中的数字都在数组中。最主要的while循环的意思是。1 在数组中,但 2 没有。最小的正数 1 没有出现。

2026-03-18 16:10:29 208

原创 238. 除了自身以外数组的乘积(中等)

再计算每个位置的后缀积,从n-2开始,也就是倒数第二个位置开始,因为倒数第一个位置的后缀积一定是1,然后往左遍历,步长为-1。和前缀积一样,倒数第二个位置就等于倒数第一个位置的数值乘以它的后缀积,三就等于二的数值乘以二的后缀积,以此类推。然后计算每个位置的前缀积,第一个位置的前缀积就是1,从第二个位置开始遍历,第二个位置的前缀积就等于第一个位置的数值乘以第一个位置的前缀积,第三个就等于第二个位置的数值乘以第二个位置的前缀积,以此类推。首先将前缀积和后缀积用两个长度与nums长度一样,数值全为1的数组表示。

2026-03-17 21:53:21 29

原创 ​189. 轮转数组(中等​)

此时我们先将数组全部反转,数组会变成[B',A'],这里的B'是反转后的B,A'也就是反转后的A。然后我们来定义反转函数,将左指针i指向当前要反转的起始位置,右指针j指向要反转的末尾位置,当i小于j时,将i和j指向的值互换,然后i向右移,j向左移,直到它们指向同一个位置或者是交错开。k%=n这一步的目的是保证k的值永远在[0,n-1]这个区间里面,因为如果k大于等于n,那么轮转的位置也就等于k-n个,例如现在有7个数字,你要向右轮转8次,他的效果就等于向右轮转一次。,将数组中的元素向右轮转。

2026-03-17 20:41:25 11

原创 56. 合并区间(中等)

从第二组开始判断数组p的左边界是不是小于或等于上一个已经放到ans里的区间的右边界,如果是,就可以合并,那么ans里上一个区间的右边界就变成当前右边界和p的右边界的最大值。如果p左边界大于ans上一个区间的右边界,说明没有重叠,那么把当前的p加入到ans里去。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。区间 [1,4] 和 [4,7] 可被视为重叠区间。

2026-03-17 19:56:02 135

原创 53.最大子数组和(中等)

从第二个输入的开始,判断它加上上一个是不是会比本身变得更大,如果更大,那就把它俩的和作为现在的最大值,然后再到第三个,看第三个加上之前两个的和是不是更大,如果更大,就将这个数与之前的和相加成为新的最大值,如此递推;如果更小,就抛弃前面的和,自己作为最大值,再往下递推。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。这个太简单了,和洛谷的p1111一样,那个用c++写了题解可以去主页看。重点是要从自己往前加前面的最大和,而不是往后!感觉说的不太清楚,看看大佬的解释!

2026-03-17 19:01:55 6

原创 P1164 小A点菜

餐馆虽低端,但是菜品种类不少,有 �N 种 (�≤100)(N≤100),第 �i 种卖 ��ai​ 元 (��≤1000)(ai​≤1000)。并且注意如果没钱但有菜也算一种点菜方案,就是不点菜,但钱也花完了。第二行起 �N 个正数 ��ai​(可以有相同的数字,每个数字均在 10001000 以内)。不过 uim 由于买了一些书,口袋里只剩 �M 元 (�≤10000)(M≤10000)。一个正整数,表示点菜方案数,保证答案的范围在 int 之内。第一行是两个数字,表示 �N 和 �M。

2024-03-22 20:01:37 783

原创 P1802 5 倍经验日

但很明显能看出来是可以进行空间上的优化的,比如上面这个代码中就取消了三个数组,而是直接用数来代替,节省一波空间,更厉害的还可以用一维数组代替二维数组,大家可以研究一下呀!悲剧的是,用药量没达到最少打败该人所需的属性药药量,则打这个人必输。后面 �n 行每行三个数,分别表示失败时获得的经验 �����losei​,胜利时获得的经验 ����wini​ 和打过要至少使用的药数量 ����usei​。干掉能拿不少经验的。现在有 �n 个好友,给定失败时可获得的经验、胜利时可获得的经验,打败他至少需要的药量。

2024-03-21 16:09:02 440

原创 P1115 最大子段和

从第二个输入的开始,判断它加上上一个是不是会比本身变得更大,如果更大,那就把它俩的和作为现在的最大值,然后再到第三个,看第三个加上之前两个的和是不是更大,如果更大,就将这个数与之前的和相加成为新的最大值,如此递推;如果更小,就抛弃前面的和,自己作为最大值,再往下递推。第二行有 �n 个整数,第 �i 个整数表示序列的第 �i 个数字 ��ai​。给出一个长度为 �n 的序列 �a,选出其中连续且非空的一段使得这段和最大。重点是要从自己往前加前面的最大和,而不是往后!感觉说的不太清楚,看看大佬的解释!

2024-03-20 21:53:24 636 1

原创 P1048 [NOIP2005 普及组] 采药

医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。第一行有 22 个整数 �T(1≤�≤10001≤T≤1000)和 �M(1≤�≤1001≤M≤100),用一个空格隔开,�T 代表总共能够用来采药的时间,�M 代表山洞里的草药的数目。接下来的 �M 行每行包括两个在 11 到 100100 之间(包括 11 和 100100)的整数,分别表示采摘某株草药的时间和这株草药的价值。NOIP 2005 普及组第三题。

2024-03-20 21:44:29 517 1

原创 P1216 [USACO1.5] [IOI1994]数字三角形 Number Triangles

其实这道题就是换一种思路想,建立一个新的二维数组,让它从最后一行往上遍历,用一个数的下面两个与它相加,看哪个最大就重新给他赋值为他俩的和,一直遍历到只剩最后一个数就是答案啦(讲的不清不楚的:)写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。对于 100%100% 的数据,1≤�≤10001≤r≤1000,所有输入在 [0,100][0,100] 范围内。在上面的样例中,从 7→3→8→7→57→3→8→7→5 的路径产生了最大权值。单独的一行,包含那个可能得到的最大的和。

2024-03-20 13:29:42 407 1

原创 P1321 单词覆盖还原

这题也太坑了!!!!!!

2024-03-19 14:46:19 447

原创 P1597 语句解析

一串长度不超过 255255 的 PASCAL 语言代码,只有a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是。一串符合语法的 PASCAL 语言,只有a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 00。未赋值的变量值为 00 输出a,b,c 的值。这种是纯粹的模拟,把所有可能的情况考虑进去就行啦。输入的 PASCAL 语言长度不超过 255。在题解区看到两种有意思的解法。输出a,b,c 最终的值。

2024-03-18 12:02:33 574

原创 P1765 手机(字符串)

要按出英文字母就必须要按数字键多下。例如要按出 �x 就得按 99 两下,第一下会出 �w,而第二下会把 �w 变成 �x。00 键按一下会出一个空格。你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。一行句子,只包含英文小写字母和空格,且不超过 200 个字符。NOI 导刊 2010 普及(10)一行一个整数,表示按键盘的总次数。

2024-03-14 16:57:57 296

原创 P5744 【深基7.习9】培训

输入学员信息,请设计一个结构体储存这些学生信息,并设计一个函数模拟培训过程,其参数是这样的结构体类型,返回同样的结构体类型,并输出学员信息。输出 �n 行,每行首先输出一个字符串表示学生姓名,再往后两个整数,表示经过一年的培训后学员的年龄和他们今年的 NOIP 成绩。经过为期一年的培训,所有同学的成绩都有所提高,提升了 20%20%(当然 NOIP 满分是 600600 分,不能超过这个得分)。每行首先是一个字符串表示学员姓名,再是一个整数表示学员年龄,再是一个整数为去年 NOIP 成绩。

2024-03-14 10:40:44 359

原创 P5743 【深基7.习8】猴子吃桃

一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;接下来的每一天它都会吃剩余的桃子的一半外加一个。第 �n 天早上起来一看,只剩下 11 个桃子了。请问小猴买了几个桃子?数据保证,1≤�≤201≤n≤20。输入一个正整数 �n,表示天数。输出小猴买了多少个桃子。

2024-03-14 10:18:41 433

原创 P1125 [NOIP2008 提高组] 笨小猴

这种方法的具体描述如下:假设 maxnmaxn 是单词中出现次数最多的字母的出现次数,minnminn 是单词中出现次数最少的字母的出现次数,如果 maxn−minnmaxn−minn 是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。中出现最多的字母 ii 出现了 11 次,出现次数最少的字母出现了 11 次,1−1=01−1=0,00 不是质数。中出现最多的字母 rr 出现了 33 次,出现次数最少的字母出现了 11 次,3−1=23−1=2,22 是质数。

2024-03-11 15:40:05 665 1

原创 P1914 小书童——凯撒密码

蒟蒻虽然忘记密码,但他还记得密码是由一个字符串组成。密码是由原文字符串(由不超过 50 个小写字母组成)中每个字母向后移动 �n 位形成的。某蒟蒻迷上了 “小书童”,有一天登陆时忘记密码了(他没绑定邮箱 or 手机),于是便把问题抛给了神犇你。打表打爆字符串总长(因为这是入门数据),然后用string中的find()找到所求位置,输出下一位即可。他现在找到了移动前的原文字符串及 �n,请你求出密码。字符串长度 ≤50≤50,1≤�≤261≤n≤26。直接将26个字母循环两次!一行,是此蒟蒻的密码。

2024-03-11 15:35:39 575 1

原创 P5730 【深基5.例10】显示屏

现在给出数字位数(不超过 100100)和一串数字,要求输出这些数字在显示屏上的效果。数字的显示方式如同样例输出,注意每个数字之间都有一列间隔。液晶屏上,每个阿拉伯数字都是可以显示成 3×53×5 的点阵的(其中。第一行输入一个正整数 �n,表示数字的位数。数据保证,1≤�≤1001≤n≤100。第二行输入一个长度为 �n 的自然数。输出五行,表示显示屏上的数字。这题有点意思,直接暴力即可。

2024-03-09 21:43:16 550

原创 P5725 【深基4.习8】求三角形c++

模仿例题,打印出不同方向的正方形,然后打印三角形矩阵。这个偏右的下三角很有意思,就等于把上面的三角输出空格即可。输入矩阵的规模,不超过 99。

2024-03-08 15:37:30 422 1

原创 P1980 [NOIP2013 普及组] 计数问题

有坑!!!因为今天看了太多字符串的代码脑子里第一时间就是把全部输入写成字符串然后遍历(然后就被背刺了:),但是一般人都不会想到这种如此愚蠢的方法,放上来给大家笑一下:)

2024-03-06 23:39:59 274 1

原创 P5719 【深基4.例3】分类平均

给定 �n 和 �k,将从 1 到 �n 之间的所有正整数可以分为两类:A 类数可以被 �k 整除(也就是说是 �k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 11 位,用空格隔开。,如果出现了小数,那么,C只会取整数部分。比如0.75,整数部分为0,小数部分为75,那么最终的结果应为0;输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。数据保证,1≤�≤100001≤n≤10000,1≤�≤1001≤k≤100。输入两个正整数 �n 与 �k。

2024-03-05 15:30:12 444

原创 P1055 [NOIP2008 普及组] ISBN 号码

以此类推,用所得的结果  mod 11mod11,所得的余数即为识别码,如果余数为 1010,则识别码为大写字母 �X。每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 99 位数字、11 位识别码和 33 位分隔符,其规定格式如。你的任务是编写程序判断输入的 ISBN 号码中识别码是否正确,如果正确,则仅输出。,否则,按照规定的格式,输出正确的 ISBN 号码(包括分隔符。一行,假如输入的 ISBN 号码的识别码正确,那么输出。就是分隔符(键盘上的减号),最后一位是识别码,例如。

2024-03-05 13:36:18 802

原创 P4414 [COCI2006-2007#2] ABC

三个整数分别为 A,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:A<B<C。为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。第一行包含三个正整数 A,B,C,不一定是按这个顺序。这三个数字都小于或等于 100100。第二行包含三个大写字母 A、B 和 C(它们之间。在一行中输出 A,B 和 C,用一个 (空格)隔开。空格)表示所需的顺序。

2024-03-04 19:22:59 361 1

原创 P1424 小鱼的航程(改进版)c语言

看着很难,但其实只需要判断是不是周末就可以,周一到周五都加上公里数,每加一次天数加一,当遇到周天,设置下一天为周一;有个点是需要将总公里数设初始值为0(就是这个地方卡住了。

2024-03-04 15:05:09 474 2

原创 P5717 【深基3.习8】三角形分类c语言

注意一个点:直角锐角钝角三种三角形是拿两短边的平方和与长边的平方作比较,所以可以先将其输入排序。

2024-03-04 14:35:09 414 1

原创 P1909 [NOIP2016 普及组] 买铅笔 题解C语言

最萌新的解法,应该是最好看懂的。

2024-03-04 14:09:42 450 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除