![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
AcWing
文章平均质量分 63
Hokachi
这个作者很懒,什么都没留下…
展开
-
AcWing3417.砝码称重——学习笔记
这题是典型的01背包问题。下一个状态就是从上一个状态转换而来,其中下一个状态与下一个状态的区别是,对于新的一个砝码的使用。一个砝码有三种使用方法:不放,放左边,放右边。题目给各个砝码的重量,则他们的总和(m)就是可以计算的最大值,我们判断0-m中哪几个重量是可以组成的,然后记录在f数组中。原创 2023-03-06 23:22:58 · 327 阅读 · 0 评论 -
AcWing3496.特殊年份——学习笔记
题目输入五个年份,将其转化为char类型的数组,然后根据以下规则:【它的千位和十位相等,个位比百位大1】进行判断。若满足则count自增,最后输出count即可。原创 2023-02-28 16:05:39 · 223 阅读 · 0 评论 -
AcWing2065.整数序列——学习笔记
题目输入一个数,然后我们只需要进行除2,若其除2后的结果大于0就输出。原创 2023-02-28 15:47:41 · 136 阅读 · 0 评论 -
AcWing2066.解码——学习笔记
遍历题目输入的字符串s,每遍历到一个字母则通过StringBuilder插入到ans中。若发现数字(例如:5),则再循环插入上一个字符4次。判断数字的标准是:'0'-'9' ASCII 为 48-57。最后得到ans再转换为String输出。原创 2023-02-23 12:07:40 · 94 阅读 · 0 评论 -
AcWing4652.纸张尺寸——学习笔记
A0纸张的大小为1189mm×841mm。输入有A0-A9各类纸张,后面的数字其实就是代表对折的次数。对折的规则就是,长边除2,短边不动。然后按规则对折够指定次数之后,按照先长边后短边的输出顺序输出。原创 2023-02-23 09:39:46 · 95 阅读 · 0 评论 -
AcWing3490.小平方——学习笔记
给一个正整数n,然后需要求1到n-1中(设i∈[1,n-1]),满足以下要求的有多少个数。要求:( i * i ) % n < n / 2需要注意的是,java除法中当不能整除的时候则自动省略小数部分,因此需要注意边界情况。将要求调整为:( i * i ) % n * 2 < n这样就可以规避上述情况。当满足情况的时候让count自增,最后count就是1到n-1中满足要求的个数,返回即可。原创 2023-02-22 22:51:23 · 177 阅读 · 0 评论 -
AcWing3303.单词分析——学习笔记
题目要求输入一串字符,然后统计哪一个字母出现次数最多,返回这个字母和它的出现次数。利用一个大小为26的int数组进行统计,用哈希表存储各个字母对应的序号,然后遍历字符串。每读到一个字母时,就在数组中对应的位置的值自增。在此过程中,用max记录最大出现次数,maxc记录出现次数最多的字母,maxID记录当前出现次数最多的字母对应的序号。(题目要求,当出现多个字母出现次数一样多的情况,返回字母序号小的,因此需要记录字母的对应序号)原创 2023-02-20 13:25:59 · 113 阅读 · 0 评论 -
AcWing3187.奇怪的数列——学习笔记
输入两行,第一行是初始值,第二行是需要转换的次数。转换的规则:如133由【一个一和两个三组成】,当他们完成了一次转换的时候为1123。每一次转换完成得到的串即是下一轮转换的初始串,因此我们利用递归完成多次的转换最后得到所求的串。原创 2023-02-19 16:39:10 · 129 阅读 · 0 评论 -
AcWing3416.时间显示——学习笔记
题意就是告诉我们从1970年1月1日00:00:00到当前时间所经过的毫秒数,不需要显示年月日,只需要显示时分秒,而毫秒也是省略不显示。一天有24*60*60*1000毫秒,用总的毫秒数对24*60*60*1000取余就可以得到,当天对应时间共有的毫秒;同理可得,一个小时有60*60*1000毫秒,一分钟有60*1000毫秒,一秒有1000毫秒。最后用三目运算符判断当前数值是否小于两位数,若小于则补前导“0”输出。原创 2023-02-18 18:04:24 · 1102 阅读 · 0 评论 -
AcWing3174.旋转——学习笔记
这个“旋转”有点像线性代数里面的“转置”,换个思路去看这题会更简单。若原数据是3行4列的,就创建一个3列4行的数组ans。然后遍历输入数据,从ans的最后一列从上往下放置数据,直至第一列的数据填满,则意味着旋转好了。最后对ans遍历输出。原创 2023-02-09 17:01:34 · 75 阅读 · 0 评论 -
AcWing1245.特别数的和——学习笔记
获取题目给的数,然后从1开始遍历到这个数。每到一个数,就将int转为char类型的数组,然后遍历这个char类型的数组,判断里面是否有“2”、“0”、“1”、“9”四个数。只要含有其中一个则让其与sum累加。最后将累加结果sum输出即可。原创 2023-02-07 20:26:46 · 89 阅读 · 0 评论 -
AcWing1229.日期问题——学习笔记
这题整体思路并不难,就是需要考虑周全。题目意思是输入一个A/B/C格式的日期,然后输出其可能表示的日期。有可能是A年B月C日、C年A月B日、C年B月A日三种可能性。除此之外,还需要对他们的数值进行判断,确保生成的是一个合法的正常的日期。然后对答案进行去重排序,即可输出。原创 2023-01-23 22:28:33 · 591 阅读 · 0 评论 -
AcWing4797.移动棋子——学习笔记
棋盘固定大小是5×5的,所以中心点的坐标很容易确定就是[2,2]。然后读取数值到一个二维数组中,记录值为“1”的下标。然后让让下标的两个值分别与“2”作差,并取绝对值然后相加。这个就是最段距离。原创 2023-01-22 21:00:40 · 127 阅读 · 0 评论 -
AcWing1227.分巧克力——学习笔记
用两个Boolean类型的数组分别存储每个巧克力的长度和宽度,长度和宽度分别除以巧克力大小得到两数再相乘,即表示可以将当前巧克力块分为当前大小的巧克力块数。每个小朋友得到的巧克力大小至少是1×1,而分到的最大的巧克力边长不可能比原巧克力最长的边长还要长。因此,在1到最大边长max区域中,采用二分法,找到每个小朋友可获得最大的巧克力大小。原创 2023-01-20 17:36:00 · 1591 阅读 · 0 评论 -
AcWing4795.安全区域——学习笔记
其实大概思路也差不多,同样用boolean数组记录行和列“是否被攻击”。只不过从一个二维数组变为两个Boolean数组,大小为100010(题目规定数据:车的数量最多为100000)。然后每放一个车进去,“未被攻击”的区域可以直接用棋盘大小减去行或列已被攻击的数量直接计算出来。原创 2023-01-18 19:30:05 · 188 阅读 · 0 评论 -
AcWing4794.健身——学习笔记
接收题目输入的数据。然后按照第一组练胸(chest),第二组连二头肌(biceps),第三组练背(back)的顺序记录下每个部位的运动时长。最后,做个判断找出锻炼时间最长的肌肉部位,并输出对应的单词即可。原创 2023-01-14 21:08:12 · 117 阅读 · 0 评论 -
AcWing1219.移动距离——学习笔记
输入三个数w,m,n,分别表示宽度、楼号1和楼号2。已知宽度和楼号,通过计算可以得出该楼号的对应坐标,以此计算两个楼号的对应坐标。知道两个坐标后,即可以计算其最短路径。原创 2023-01-13 12:42:25 · 123 阅读 · 0 评论 -
AcWing1216.饮料换购——学习笔记
按题目要求获取初始饮料数量。然后饮料熟练除3,商表示换购的数量,而余数表示尚未用于兑换的瓶盖。将商记录到【已喝】的数量上,然后第一次换购的饮料数加上未换购的瓶盖数等于下一轮用于兑换的总瓶盖数。然后每一轮都按照上述操作,将每一轮可以喝的数量累加到一起。原创 2023-01-12 22:34:29 · 233 阅读 · 0 评论 -
AcWing1210.连号区间——学习笔记
这题用的是枚举法。但是直接枚举的话,时间会超时,因此需要对枚举作优化。按题目要求获取到数据后,用两个指针遍历数组,并记录两指针之间区域的最大值和最小值。若【最大值和最小值之差】与【最大值的下标和最小值的下标之差】相等,那意味着这个区域是连号区间,然后用count值记录即可。原创 2023-01-12 21:55:15 · 100 阅读 · 0 评论 -
AcWing1208.翻硬币——学习笔记
刚拿到这道题,一眼过去确实懵。可是看了解析有了思路后发现,确实就是一道非常简单的简单题。关键就在于,看似需要经过很多翻硬币的操作,而且每次操作会同时翻转相邻两枚硬币。看似不确定的操作,实际上是确定的。简而言之,只要上一个操作确定了,那么下一个操作也随之确定。而第一个操作,只需要初始字符串与目标字符串对比即可确实是否需要“翻转”,而后续是否需要“翻转”也随之依次可以确定了。题目提到答案一定有解,所以甚至不需要考虑无解的情况。原创 2023-01-07 20:54:48 · 117 阅读 · 0 评论 -
AcWing4664.字符统计——学习笔记
思路:这是一道统计题。需要两个字典,一个是通过【字母】找字母的【序号】,一个是通过字母的【序号】找到对应的【字母】。获取输入数据,然后每个字母遍历,某个字母每出现一次就记录下来,并用max变量记录当前出现过最多次数是多少次。当遍历完成时,可知出现过最多次数是多少次,然后再遍历appear,appear的值若为max则以为着当前位置对应的字母是需要输出的,则将其添加到ans中。原创 2023-01-06 21:55:49 · 95 阅读 · 0 评论 -
AcWing1206.剪格子——学习笔记(未AC)
思路:先按规定录入数据,若总值平分后不是整数则不满题意可以直接返回“0”,否则使用深度优先搜索,计算包含左上角的分割区可能包含的最小的格子数目。原创 2023-01-03 21:49:25 · 462 阅读 · 0 评论 -
AcWing4788.最大数量——学习笔记
思路:由题意可知,“所有时间都按照时间先后顺序给出。”。那么将数据录入之后自然就是有序的,只需要让相邻的元素逐一对比,若时分都相同则让临时计数的变量count自增。当count的值大于最大相同数max的时候,则更新max的值。若相邻元素不一样了,则意味着重新开始计算当前相同数count,所以将count的重置为1。最后得到的max就是题目所求,输出即可。原创 2022-12-31 20:20:07 · 132 阅读 · 0 评论 -
AcWing1205.买不到的数目——学习笔记
思路:这题暴力也可以解决,但是如果知道定论可以很轻松的秒杀。定论:p、q为正整数且p、q互质,“不能凑出的最大整数”为(p-1)(q-1)-1。原创 2022-12-30 19:27:23 · 75 阅读 · 0 评论 -
AcWing1204.错误票据——学习笔记
思路:获取第一行的数值并记录在line变量中,循环line次获取每一行的ID号。使用StringBuilder对ID号进行规范化处理并将其转为int类型,然后对int类型的ID号数组进行排序。然后找出相邻两个数差值大于1的位置,即为缺失的ID;排序后,相邻的元素不相同,那么他们就不是重复元素,反之,即为重复元素。原创 2022-12-30 17:36:56 · 570 阅读 · 0 评论 -
AcWing1.A+B——学习笔记
思路:使用Scanner接收输入的整段字符串,以空格为分界线,分为两个字符串。再将字符串一一转化为数值,最后相加并输出。1. A + B - AcWing题库。原创 2022-11-06 18:53:56 · 151 阅读 · 0 评论