![](https://img-blog.csdnimg.cn/c2166cd3783d40928039e32ddefe0f29.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
练习题
练习
啊哈leelee~
这个作者很懒,什么都没留下…
展开
-
牛客网KY111 日期差值
如果两个年份不相等,计算出较大年份(year2)的天数,以及较小年份(year1)剩余的天数,再计算两个年份中间所有年的总天数,将三者相加再加1即为所求天数;如果两个年份相等,分别计算两者的天数,相减再加1即为所求天数。(加1是因为题目要求)有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD。每组数据输出一行,即日期差值。原创 2024-03-20 17:38:36 · 241 阅读 · 1 评论 -
牛客网KY258 日期累加
直接简单的思路:首先累加的天数(days)减去当前月份剩余天数(months[month]-day),若差值小于零,则月份不变,日期(day)加上累加天数(days)即所求日期;需要注意的是,循环过程中月份可能会大于12,此时年份(year)需要加一,并且月份重置为1;年份变化时,还需要再次判断是否为闰年,若为闰年二月份天数改为29,否则改为28(如果没有改为28,当年份为闰年且加上若干天后变为平年时,在进入循环之前二月份天数被改为29,在while循环体内判断为平年,此时二月份天数仍为29,是错误的)。原创 2024-03-20 15:16:41 · 293 阅读 · 0 评论 -
牛客网KY222 打印日期
在计算之前需要判断当前年份是否为闰年,若为闰年则二月份天数改为29天,否则为28天。然后用总天数依次减去每个月的天数,由此得到月份和日期。题目要求输出格式为“yyyy-mm-dd”,打印时使用“%02d”格式说明符,表示如果输出的长度小于2则前面补0。可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。给出年分m和一年中的第n天,算出第n天是几月几号。原创 2024-03-12 16:01:45 · 267 阅读 · 0 评论 -
牛客网KY19 今年的第几天?
首先要注意到闰年的二月份有29天,所以在计算天数之前需要判断当前年份是否为闰年。为了方便计算,将每个月份的天数保存到一维数组中,计算时只需读出保存的数据进行累加即可。另外,当前年份为闰年时建议直接将数组对应月份天数修改,而不是总天数加1,否则计算闰年二月份某天的总天数时,会多加一天。输入可能有多组测试数据,对于每一组测试数据, 输出一个整数,代表Input中的年、月、日对应本年的第几天。包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。原创 2024-03-12 15:27:02 · 168 阅读 · 0 评论 -
牛客网KY156 百鸡问题
用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。根据题目条件直接使用嵌套循环暴力求解,运算时注意小数。测试数据有多组,输入n。原创 2024-03-12 14:23:07 · 230 阅读 · 0 评论 -
牛客网KY50 与7无关的数
一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7, 则称其为与7相关的数.现求所有小于等于n(n<100)的与7无关的正整数的平方和。最直接最简单的想法就是一位一位判断是否含有7,再判断是否能被7整除,枚举出所有符合条件的数,并求它们的平方和。对于每个测试案例输入为一行,正整数n,(n<100)对于每个测试案例输出一行,输出小于等于n的与7无关的正整数的平方和。原创 2024-03-12 11:21:32 · 175 阅读 · 0 评论 -
牛客网KY267 对称平方数1
具有对称性质的数实际上就是自身等于其反序数的数,例如1221。所以可以直接使用之前求反序数的函数,判断一个数是否等于其反序数,相等就输出,不等直接跳过判断下一个数。打印所有不超过256,其平方具有对称性质的数。如2,11就是这样的数,因为2*2=4,11*11=121。输出具有题目要求的性质的数。如果输出数据不止一组,各组数据之间以回车隔开。原创 2024-03-12 10:55:56 · 232 阅读 · 0 评论 -
牛客网KY266 反序数
题目明确了N是一个四位数,且其9倍等于其反序数,所以N的千位和个位均不能为0。直接暴力求解,枚举出所有可能,每当遇到符合题目要求的解就输出。还有一种更简便的方法,由题意可知,N的取值范围为1000~9999,所以用一层循环即可解决问题。这种方法需要求写一个函数来求出反序数。设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)求N的值。输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开。程序无任何输入数据。原创 2024-03-11 17:48:04 · 229 阅读 · 0 评论 -
牛客网KY15 abc
设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。请输出所有满足题目条件的a、b、c的值。a、b、c之间用空格隔开。写完后发现判等表达式还可以简化为:a*100+b*110+c*12 == 532。直接暴力求解,枚举出所有的可能,每当遇到符合题目要求的解就输出它。原创 2024-03-11 17:27:09 · 234 阅读 · 0 评论 -
力扣232. 用栈实现队列
根据栈后进先出的性质,可将两个栈分别设置为只压入元素的栈和只弹出元素的栈,以此来满足队列先进先出的性质。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(原创 2024-01-03 17:56:19 · 530 阅读 · 0 评论 -
力扣225. 用队列实现栈
将元素压入栈顶,即将元素插入队尾,注意要插入到不为空的队列中,如果两个队列均为空,随便插入一个队列即可。取栈顶元素时,将不空队列中的元素插入空队列中,当不空队列中只剩下一个元素时,该元素为栈顶元素。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(原创 2024-01-03 16:59:06 · 561 阅读 · 0 评论 -
力扣138. 复制带随机指针的链表
从途中可以看出,当结点的random指针不为空时,拷贝结点的random指针指向对应原结点的random指针指向的结点的next,即copy->random = cur->random->next。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够。最后,将拷贝结点进行尾插,得到深拷贝链表,然后恢复原链表,断开拷贝结点和原链表的链接。解题步骤分为三步,首先将原链表的所有结点拷贝一份,并插入在对应的原结点后面。复制链表中的指针都不应指向原链表中的节点。原创 2023-07-21 15:42:20 · 97 阅读 · 0 评论 -
力扣142. 环形链表 II
slow进环之后,fast一定会在一圈之内追上slow,因为slow和fast之间的距离最大是C,而slow和fast每移动一次,它们俩之间的距离就会减1,所以在slow移动一圈之前fast一定会追上。假设链表起始结点head到环起始结点head'的距离为L,环起始结点head'到快慢指针相遇结点meet的距离为X,环的长度为C,则meet到head'的距离为C-X。方法一:设置两个指针,一个指针指向链表头结点,一个指针指向判环时快慢指针相遇的位置,然后两个指针同时走,它们会在环的第一个结点处相遇。原创 2023-07-17 20:34:51 · 399 阅读 · 0 评论 -
力扣141. 环形链表
第二个问题,如果链表有环,slow走1步,fast走3步时,fast比slow先进环。slow进环后,fast开始追赶slow,slow每走1步、fast每走3步,fast和slow之间的距离减少2步。假设环的长度为C,此时fast与slow的距离为C-1,如果C-1为偶数,slow和fast一定会相遇;第一个问题,如果链表有环,slow走1步,fast走2步时,fast比slow先进环。slow进环后,fast开始追赶slow,slow每走1步、fast每走2步,slow和fast之间的距离减少1步。原创 2023-07-16 20:22:28 · 480 阅读 · 0 评论 -
力扣160. 相交链表
假设两个单链表的长度分别为lenA和lenB,设置两个指针分别指向两个链表的头结点,让指向较长链表的指针先走abs(lenA-lenB)步,然后两个指针再同时向后走,边走边比较指针所指结点的地址是否相等,若相等则返回当前结点,若不等则同时向后走一步,直到找到第一个相交结点为止。,不能是X字型,如果是X字型,则相交结点有两个后继结点,而单链表结点只能有一个后继结点。因此可得出,若两个单链表相交,则两个链表的尾结点的地址一定相同;首先,我们应该明确如果两个单链表相交,那么这两个链表的形状只能是。原创 2023-07-16 19:30:14 · 459 阅读 · 0 评论 -
牛客网OR36 链表的回文结构
先找到链表的中间结点,然后将链表的后半段进行逆置,再依次比较链表的前半段和后半段,如果相同则返回true,如果不同则返回false。给定一个链表的头指针head,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。寻找链表中间节点具体分析。原创 2023-07-15 20:15:29 · 272 阅读 · 0 评论 -
牛客网CM11 链表分割
可以不用讨论lesstail和greatertail为空的情况,简化问题。注意,两个链表合并之后,greatertail的next需要置空,因为结点仍保留着之前的链接关系,下面示例刚好greatertail的next为空指针。设置两个新链表,把小于x的结点全部尾插到第一个链表中,大于等于x的结点全部尾插到第二个链表中,最后在把两个链表链接起来,返回第一个链表的头指针。pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且。,返回重新排列后的链表的头指针。原创 2023-07-14 21:31:12 · 252 阅读 · 0 评论 -
力扣21. 合并两个有序链表
设置两个指针head和tail,head用来指向新链表的头结点,tail用来进行新链表的尾插。比较两个链表,取较小的结点进行尾插。注意,当有一个链表为空时,直接返回另一个非空链表;当有一个链表先为空时,tail直接指向非空链表,合并结束,返回head。新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。原创 2023-07-14 17:26:53 · 380 阅读 · 0 评论 -
牛客网 链表中倒数第k个结点
设置2个指针fast和slow,让fast先往后走k步,然后slow和fast同时向后移动,当fast指向空指针时,slow指向倒数第k个结点。注意,当链表为空时或者当k大于链表长度时,应当返回空指针,所以在while循环体一开始首先判断fast是否为空,若为空则返回NULL,否则程序继续。输入一个链表,输出该链表中倒数第k个结点。原创 2023-07-12 20:48:36 · 33 阅读 · 0 评论 -
力扣206. 反转链表
当n2不为空时,n2指向n1,然后n1 、n2、n3同时向后移动一个位置,以此类推,直至n2指向空结点,此时n1为反转后链表的头结点。注意,当原链表为空时,n3是非法的,所以应当分两种情况讨论,链表为空时直接返回空指针,不为空时按照上述方法执行。当cur不为空时,next指向下一个元素,cur的next指向newhead,然后把cur赋给newhead,变为新链表的头结点,cur再指向next,以此类推,直至cur指向空结点,此时newhead为反转后的链表的头结点。,请你反转链表,并返回反转后的链表。原创 2023-07-12 19:35:01 · 391 阅读 · 0 评论 -
力扣876. 链表的中间结点
设置快慢指针slow和fast,slow每次走一步,fast每次走两步,当fast走完时,slow刚好指到链表中间结点。从下图中可以看出,当链表结点个数为奇数时,fast指向链表尾结点,slow刚好指向中间节点;当链表结点个数为偶数时,fast指向NULL,slow刚好指向第二个中间结点。所以循环的条件为 while(fast && fast->next),最后返回slow即可。请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。原创 2023-07-11 17:49:24 · 213 阅读 · 0 评论 -
力扣88合并两个有序数组
分别设置3个指针end1、end2、tmp,end1指向nums1中最后一个非0元素,end2指向nums2中最后一个元素,tmp指向nums1中最后一个元素。当nums1和nums2都不为空时,比较nums1[end1]和nums2[end2],如果nums1[end1]>nums2[end2],nums1[tmp]=nums1[end1],tmp--,end1--;如果nums1[end1]<nums2[end2],nums1[tmp]=nums2[end2],tmp--,end2--。原创 2023-07-07 18:29:41 · 46 阅读 · 0 评论 -
力扣26删除有序数组中的重复项
1、分别设置3个指针src1、src2、dst,src1和dst指向数组第一个元素,src2指向数组第二个元素。若不同,则把src2的值赋给dst+1所指的位置,然后dst++,src1++。2、设置2个指针src和dst,dst指向数组第一个元素,src指向数组元素第二个元素。若不同,则把src所指元素赋给dst+1所指位置,然后dst++,src++。链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array。原创 2023-07-07 15:45:05 · 36 阅读 · 0 评论 -
力扣27移除元素
链接:https://leetcode.cn/problems/remove-element。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。移除所有数值等于val的元素,并返回移除后数组的新长度。给你一个数组nums和一个值val,你需要。时间复杂度O(N^2),空间复杂度O(1)时间复杂度O(N),空间复杂度O(1)不要使用额外的数组空间,你必须仅使用。额外空间并原地修改输入数组。原创 2023-06-28 18:04:22 · 44 阅读 · 0 评论