- 博客(340)
- 收藏
- 关注
原创 76. 最小覆盖子串
给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。tts"BANC"最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。"a"整个字符串 s 是最小覆盖子串。""t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。
2024-09-04 19:25:18
322
原创 142. 环形链表 II
给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(如果pos是-1,则在该链表中没有环。pos,仅仅是为了标识链表的实际情况。链表。返回索引为 1 的链表节点链表中有一个环,其尾部连接到第二个节点。返回索引为 0 的链表节点链表中有一个环,其尾部连接到第一个节点。返回 null链表中没有环。
2024-09-04 16:23:32
420
原创 88. 合并两个有序数组
给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你nums2到nums1中,使合并后的数组同样按排列。最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。需要合并 [1,2,3] 和 [2,5,6]。合并结果是 [,2,,5,6] ,其中斜体加粗标注的为 nums1 中的元素。[1]
2024-09-04 15:34:19
230
原创 167. 两数之和 II - 输入有序数组
给你一个下标从开始的整数数组numbers,该数组已按,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是和,则。以长度为 2 的整数数组的形式返回这两个整数的下标index1和index2。你可以假设每个输入,而且你重复使用相同的元素。你所设计的解决方案必须只使用常量级的额外空间。27[1,2]2 与 7 之和等于目标数 9。因此 index1 = 1, index2 = 2。返回 [1, 2]。2,3,4[1,3]2 与 4 之和等于目标数 6。
2024-09-04 15:03:46
443
原创 122. 买卖股票的最佳时机 II
给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。7在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。
2024-09-03 16:01:59
118
原创 763. 划分字母区间
给你一个字符串s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是s。返回一个表示每个字符串片段的长度的列表。[9,7,8]划分结果为 "ababcbaca"、"defegde"、"hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。[10]
2024-09-03 15:26:54
556
原创 452. 用最少数量的箭引爆气球
有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组points,其中表示水平直径在xstart和xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为startend, 且满足end,则该气球会被。可以射出的弓箭的数量。弓箭一旦被射出之后,可以无限地前进。给你一个数组points返回引爆所有气球所必须射出的弓箭数。
2024-09-02 15:59:12
468
原创 605. 种花问题
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组flowerbed表示花坛,由若干0和1组成,其中0表示没种植花,1表示种植了花。另有一个数n,能否在不打破种植规则的情况下种入n朵花?能则返回true,不能则返回false。truefalse。
2024-09-02 14:40:35
336
原创 435. 无重叠区间
给定一个区间的集合intervals,其中。返回需要移除区间的最小数量,使剩余区间互不重叠。1移除 [1,3] 后,剩下的区间没有重叠。2你需要移除两个 [1,2] 来使剩下的区间没有重叠。0你不需要移除任何区间,因为它们已经是无重叠的了。
2024-09-01 17:00:28
314
原创 135. 分发糖果
虽然这一 道题也是运用贪心策略,但我们只需要简单的两次遍历即可:把所有孩子的糖果数初始化为 1。再从右往左遍历一遍,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数 不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。这里的贪心策略即为,在每次遍历中,只考虑并更新相邻一 侧的大小关系。先从左往右遍历一遍,如果右边孩子的评分比左边的高,则右边孩子的糖果数更新为左边孩子的 糖果数加 1。你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。,第一次遍历更新后的结果为。
2024-09-01 16:03:24
250
原创 455. 分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j]。如果,我们可以将这个饼干j分配给孩子i,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。1你有三个孩子和两块小饼干,3 个孩子的胃口值分别是:1,2,3。虽然你有两块小饼干,由于他们的尺寸都是 1,你只能让胃口值是 1 的孩子满足。所以你应该输出 1。2。
2024-09-01 15:25:02
270
原创 1025 反转链表
给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转。例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4;如果 K 为 4,则输出应该为 4→3→2→1→5→6,即最后不到 K 个元素不反转。
2024-08-28 16:06:36
569
原创 CSAPP:Lab3 -AttackLab-Level2
同level1一样,利用缓冲区溢出,getbuf返回地址要修改,可以利用getbuf创建的40字节缓冲区,将栈顶地址即%rsp的内容,放到getbuf()的返回地址处,然后我们自己构造的三行汇编代码字节序列,放在%rsp栈顶位置处,当getbuf()返回时,返回到图中%rsp指示的位置,然后执行我们自己构造的汇编代码,该汇编代码跳转到touch2()执行。查看getbuf()代码,我们要获取执行getbuf时的%rsp栈顶位置值。剩下的问题变成了,将该汇编代码字节序列放在什么位置。来完成字符串漏洞攻击。
2024-08-27 21:03:23
543
原创 CSAPP:Lab3 -AttackLab-Level1
关于测试环境的问题,也许是不同虚拟机环境不同,导致实验程序的兼容性出现了问题,如下图,我按照实验手册中说明的控制台进行输入的方法测试,没有办法进行输入,直接会报错。的开始地址,放在某个位置(test进行call getbuf()指令前,要将该指令的下一指令地址压栈,此时的压入栈帧中的位置,就是我们要修改的位置),以实现当。代码开始通过$rsp-40创建了40个字节的栈帧空间,然后将栈顶地址赋给rdi,调用Gets()进行输入,输入字符放到此40字节的缓冲区中。验证过,是可行的,如下图。
2024-08-27 18:22:45
846
原创 1024 科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9][0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。
2024-08-27 11:22:34
418
原创 1023 组个最小数
给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。现给定数字,请编写程序输出能够组成的最小的数。
2024-08-26 21:03:24
168
原创 1021 个位数统计
给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
2024-08-26 20:16:58
316
原创 1020 月饼
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。
2024-08-26 11:13:12
464
原创 CSAPP:Lab2 -BombLab-01
重点关注esi寄存器,因为我们在phase_2中是将立即数 0x402400传入esi寄存器,在strings_not_equal函数关注第4和第5行代码,这里一个是我们通过终端输入字符串,字符串首地址在rdi寄存器中,一个是代码中地址0x402400的字符串,这里主要是比较这两个函数的字符穿内容是否相同,如果相同就返回0,不同则返回1(代码逻辑不难,大家可以自行研究下),所以我们通过gdb,x/s 0x402400,可以查询到该地址处的内容,如下图所示,这也就是我们第一关的答案。找到phase_1函数。
2024-08-25 21:22:18
722
原创 1019 数字黑洞
给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫 Kaprekar 常数。例如,我们从6767开始,将得到现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。
2024-08-25 12:01:20
317
原创 1018 锤子剪刀布
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
2024-08-25 10:19:37
134
原创 1017 A除以B
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
2024-08-25 10:02:02
170
原创 1016 部分A+B
正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。现给定 A、DA、B、DB,请编写程序计算 PA+PB。
2024-08-25 09:46:19
268
原创 CSAPP:Lab1 -DataLab
关于vscode的安装和配置,以及ssh插件安装和配置,大家可以网上搜一下,有很多这方面的教程,如果大家有环境弄不明白的,也欢迎私信我。实验开始前,先阅读下README文档,我们主要的工作就是编辑bits.c源文件中的各个函数,每次修改完源文件,要通过make btest进行编译,然后通过./dlc -e bits.c来检查源文件的合法性,最后通过运行./btest 检测我们写的函数功能是否通过。如下图,如果函数功能通过,会显示得分,不通过,会给出每个函数的错误信息。如下是我搭建的实验环境。
2024-08-20 20:13:38
709
原创 1012 数字分类
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。对给定的 N 个正整数,按题目要求计算 A1~A5 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。若分类之后某一类不存在数字,则在相应位置输出。
2024-08-14 21:29:42
395
原创 1015 德才论
宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。现给出一批考生的德才分数,请根据司马光的理论给出录取排名。
2024-08-14 21:26:01
283
原创 1008 数组元素循环右移问题
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
2024-08-13 10:50:49
541
原创 1007 素数对猜想
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。
2024-08-13 10:31:12
214
原创 1006 换个格式输出整数
让我们用字母B来表示“百”、字母S表示“十”,用12...n来表示不为零的个位数字n(<10),换个格式来输出任一个不超过 3 位的正整数。例如234应该被输出为BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。
2024-08-11 11:51:13
170
原创 1005 继续(3n+1)猜想
卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。
2024-08-11 11:39:50
280
原创 1003 我要通过
是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“”大派送 —— 只要读入的字符串满足下列条件,系统就输出“”,否则输出“得到“PATxPATxxAaPbTcaPbATcaabcA现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“”的。
2024-08-10 17:29:21
241
原创 1001 害死人不偿命的(3n+1)猜想
对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?
2024-08-09 22:07:13
269
原创 CSAPP学习随笔
如果能认真做完这些实验,真的会收获非常多,不仅是对计算机知识的提示,对于编程能力,debug能力,动手能力都有非常大的帮助。关于书中的练习题,这个是帮助理解书本知识最好的方法,csapp里面的练习题设计的都非常好。这本书应该不需要我过多介绍了,看这本书个人依赖了视频和书本对照学习,学习的进度慢,某些章节理解起来也会比较痛苦,不知道多久可以更一期,做这个系列也算是鼓励自己加油学习。- 观看一些优秀的CSAPP相关的视频教程,诸如CMU的15-213课程,这些资源通常能以更直观和生动的方式解释复杂的概念。
2024-08-09 13:45:34
962
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人