自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 问答 (2)
  • 收藏
  • 关注

原创 AcWing4957.飞机降落——学习笔记

这道题的解题思路的本质就是枚举,将所有可能降落的顺序都枚举一遍,判断在所有的方案中,是否存在一个安全的降落方案。利用深度优先搜索(DFS)实现上述想法,将所有降落顺序按照树的形式排列,然后采取深度优先对树进行遍历。利用一个boolean类型的flag记录是否找到安全降落的方案,若有则将其值改为true,否则为flase。最后,每一组数据根据flag的值输出“YES”或“NO”即可。

2023-04-15 23:17:52 330 1

原创 AcWing3417.砝码称重——学习笔记

这题是典型的01背包问题。下一个状态就是从上一个状态转换而来,其中下一个状态与下一个状态的区别是,对于新的一个砝码的使用。一个砝码有三种使用方法:不放,放左边,放右边。题目给各个砝码的重量,则他们的总和(m)就是可以计算的最大值,我们判断0-m中哪几个重量是可以组成的,然后记录在f数组中。

2023-03-06 23:22:58 281

原创 AcWing3496.特殊年份——学习笔记

题目输入五个年份,将其转化为char类型的数组,然后根据以下规则:【它的千位和十位相等,个位比百位大1】进行判断。若满足则count自增,最后输出count即可。

2023-02-28 16:05:39 168

原创 AcWing2065.整数序列——学习笔记

题目输入一个数,然后我们只需要进行除2,若其除2后的结果大于0就输出。

2023-02-28 15:47:41 95

原创 AcWing2066.解码——学习笔记

遍历题目输入的字符串s,每遍历到一个字母则通过StringBuilder插入到ans中。若发现数字(例如:5),则再循环插入上一个字符4次。判断数字的标准是:'0'-'9' ASCII 为 48-57。最后得到ans再转换为String输出。

2023-02-23 12:07:40 83

原创 AcWing4652.纸张尺寸——学习笔记

A0纸张的大小为1189mm×841mm。输入有A0-A9各类纸张,后面的数字其实就是代表对折的次数。对折的规则就是,长边除2,短边不动。然后按规则对折够指定次数之后,按照先长边后短边的输出顺序输出。

2023-02-23 09:39:46 68

原创 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 127

原创 AcWing3303.单词分析——学习笔记

题目要求输入一串字符,然后统计哪一个字母出现次数最多,返回这个字母和它的出现次数。利用一个大小为26的int数组进行统计,用哈希表存储各个字母对应的序号,然后遍历字符串。每读到一个字母时,就在数组中对应的位置的值自增。在此过程中,用max记录最大出现次数,maxc记录出现次数最多的字母,maxID记录当前出现次数最多的字母对应的序号。(题目要求,当出现多个字母出现次数一样多的情况,返回字母序号小的,因此需要记录字母的对应序号)

2023-02-20 13:25:59 76

原创 AcWing3187.奇怪的数列——学习笔记

输入两行,第一行是初始值,第二行是需要转换的次数。转换的规则:如133由【一个一和两个三组成】,当他们完成了一次转换的时候为1123。每一次转换完成得到的串即是下一轮转换的初始串,因此我们利用递归完成多次的转换最后得到所求的串。

2023-02-19 16:39:10 106

原创 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 1056

原创 AcWing3174.旋转——学习笔记

这个“旋转”有点像线性代数里面的“转置”,换个思路去看这题会更简单。若原数据是3行4列的,就创建一个3列4行的数组ans。然后遍历输入数据,从ans的最后一列从上往下放置数据,直至第一列的数据填满,则意味着旋转好了。最后对ans遍历输出。

2023-02-09 17:01:34 67

原创 AcWing1245.特别数的和——学习笔记

获取题目给的数,然后从1开始遍历到这个数。每到一个数,就将int转为char类型的数组,然后遍历这个char类型的数组,判断里面是否有“2”、“0”、“1”、“9”四个数。只要含有其中一个则让其与sum累加。最后将累加结果sum输出即可。

2023-02-07 20:26:46 81

原创 AcWing1229.日期问题——学习笔记

这题整体思路并不难,就是需要考虑周全。题目意思是输入一个A/B/C格式的日期,然后输出其可能表示的日期。有可能是A年B月C日、C年A月B日、C年B月A日三种可能性。除此之外,还需要对他们的数值进行判断,确保生成的是一个合法的正常的日期。然后对答案进行去重排序,即可输出。

2023-01-23 22:28:33 582

原创 AcWing4797.移动棋子——学习笔记

棋盘固定大小是5×5的,所以中心点的坐标很容易确定就是[2,2]。然后读取数值到一个二维数组中,记录值为“1”的下标。然后让让下标的两个值分别与“2”作差,并取绝对值然后相加。这个就是最段距离。

2023-01-22 21:00:40 98

原创 AcWing1227.分巧克力——学习笔记

用两个Boolean类型的数组分别存储每个巧克力的长度和宽度,长度和宽度分别除以巧克力大小得到两数再相乘,即表示可以将当前巧克力块分为当前大小的巧克力块数。每个小朋友得到的巧克力大小至少是1×1,而分到的最大的巧克力边长不可能比原巧克力最长的边长还要长。因此,在1到最大边长max区域中,采用二分法,找到每个小朋友可获得最大的巧克力大小。

2023-01-20 17:36:00 1545

原创 AcWing4795.安全区域——学习笔记

其实大概思路也差不多,同样用boolean数组记录行和列“是否被攻击”。只不过从一个二维数组变为两个Boolean数组,大小为100010(题目规定数据:车的数量最多为100000)。然后每放一个车进去,“未被攻击”的区域可以直接用棋盘大小减去行或列已被攻击的数量直接计算出来。

2023-01-18 19:30:05 96

原创 AcWing4794.健身——学习笔记

接收题目输入的数据。然后按照第一组练胸(chest),第二组连二头肌(biceps),第三组练背(back)的顺序记录下每个部位的运动时长。最后,做个判断找出锻炼时间最长的肌肉部位,并输出对应的单词即可。

2023-01-14 21:08:12 94

原创 AcWing1219.移动距离——学习笔记

输入三个数w,m,n,分别表示宽度、楼号1和楼号2。已知宽度和楼号,通过计算可以得出该楼号的对应坐标,以此计算两个楼号的对应坐标。知道两个坐标后,即可以计算其最短路径。

2023-01-13 12:42:25 113

原创 AcWing1216.饮料换购——学习笔记

按题目要求获取初始饮料数量。然后饮料熟练除3,商表示换购的数量,而余数表示尚未用于兑换的瓶盖。将商记录到【已喝】的数量上,然后第一次换购的饮料数加上未换购的瓶盖数等于下一轮用于兑换的总瓶盖数。然后每一轮都按照上述操作,将每一轮可以喝的数量累加到一起。

2023-01-12 22:34:29 200

原创 AcWing1210.连号区间——学习笔记

这题用的是枚举法。但是直接枚举的话,时间会超时,因此需要对枚举作优化。按题目要求获取到数据后,用两个指针遍历数组,并记录两指针之间区域的最大值和最小值。若【最大值和最小值之差】与【最大值的下标和最小值的下标之差】相等,那意味着这个区域是连号区间,然后用count值记录即可。

2023-01-12 21:55:15 93

原创 AcWing1208.翻硬币——学习笔记

刚拿到这道题,一眼过去确实懵。可是看了解析有了思路后发现,确实就是一道非常简单的简单题。关键就在于,看似需要经过很多翻硬币的操作,而且每次操作会同时翻转相邻两枚硬币。看似不确定的操作,实际上是确定的。简而言之,只要上一个操作确定了,那么下一个操作也随之确定。而第一个操作,只需要初始字符串与目标字符串对比即可确实是否需要“翻转”,而后续是否需要“翻转”也随之依次可以确定了。题目提到答案一定有解,所以甚至不需要考虑无解的情况。

2023-01-07 20:54:48 113

原创 AcWing4664.字符统计——学习笔记

思路:这是一道统计题。需要两个字典,一个是通过【字母】找字母的【序号】,一个是通过字母的【序号】找到对应的【字母】。获取输入数据,然后每个字母遍历,某个字母每出现一次就记录下来,并用max变量记录当前出现过最多次数是多少次。当遍历完成时,可知出现过最多次数是多少次,然后再遍历appear,appear的值若为max则以为着当前位置对应的字母是需要输出的,则将其添加到ans中。

2023-01-06 21:55:49 71

原创 AcWing1206.剪格子——学习笔记(未AC)

思路:先按规定录入数据,若总值平分后不是整数则不满题意可以直接返回“0”,否则使用深度优先搜索,计算包含左上角的分割区可能包含的最小的格子数目。

2023-01-03 21:49:25 448

原创 AcWing4788.最大数量——学习笔记

思路:由题意可知,“所有时间都按照时间先后顺序给出。”。那么将数据录入之后自然就是有序的,只需要让相邻的元素逐一对比,若时分都相同则让临时计数的变量count自增。当count的值大于最大相同数max的时候,则更新max的值。若相邻元素不一样了,则意味着重新开始计算当前相同数count,所以将count的重置为1。最后得到的max就是题目所求,输出即可。

2022-12-31 20:20:07 113

原创 AcWing1205.买不到的数目——学习笔记

思路:这题暴力也可以解决,但是如果知道定论可以很轻松的秒杀。定论:p、q为正整数且p、q互质,“不能凑出的最大整数”为(p-1)(q-1)-1。

2022-12-30 19:27:23 67

原创 AcWing1204.错误票据——学习笔记

思路:获取第一行的数值并记录在line变量中,循环line次获取每一行的ID号。使用StringBuilder对ID号进行规范化处理并将其转为int类型,然后对int类型的ID号数组进行排序。然后找出相邻两个数差值大于1的位置,即为缺失的ID;排序后,相邻的元素不相同,那么他们就不是重复元素,反之,即为重复元素。

2022-12-30 17:36:56 559

原创 数据结构:单链表

当找到需要删除的节点时,temp会指向需要删除的节点,而front则会指向需要删除节点的前一个节点。front变量的存在,就是为了方便删除操作,将front.next的值直接更改为temp.next值(意味着已经跳过temp节点),在java中temp节点则被视为弃用的节点会被自动回收。传入一个新的节点,新节点的bookNumber应该与目标节点保持一致。就是在链表中找到某一个位置,上一个节点的书本编号小于新节点的书本编号,而下一个节点的书本编号又大于新节点的书本编号,这意味着该位置就是新节点的最佳位置。

2022-11-19 11:34:44 462

原创 数据结构:循环队列

的操作,我的思路是将头指针固定不动,然后每一次元素入队就将尾指针后移,每一次出队就把当前头指针指向的元素返回,然后将整个数组整体前移一个位置,尾指针同时减一。与普通队列不同的是,头指针front与尾指针rear的初始值都设置为0,并且由于循环队列中需要空出一个位置用于判断和保持操作一致,因此数组实际大小应该比用户期待队列的大小大1,因此size的值应该为用户期待队列大小的值maxsize加一。的学习笔记,这一篇写的是循环队列,大部分代码可以继续沿用,某些地方需要作出更改,使其可以实现循环队列的功能。

2022-11-16 10:54:10 1291

原创 数据结构:队列

如果不为空,则将对首元素记录在ans变量中,然后数组其他元素一次向前移动一个位置,保证队列的结构。(此时,arr[rear]位置还保存着队尾元素,只是我们已经将整体先前移动了一个位置,所以rear自减前的位置的数据我们已经不再需要了,等下一次有元素入队的时候就会将这个元素覆盖掉。rear是尾指针,head是头指针,size用于记录队列的大小,数组arr则用于实现队列。步骤也相似,先判空,若合法则打印对首元素。其功能包括构造队列、队列判满、队列判空、元素入队、元素出队、获取队首元素、打印队列。

2022-11-14 16:27:52 369

原创 数据结构:稀疏数组

某个数据中,若某项无意义数据大量存在,就可以使用稀疏数组代替原数组。保存原数组中有效的信息的前提下,省略大量的无意义数据,从而达到节省空间的目的。//test部分仅为输出测试,与稀疏数组本身无关。

2022-11-08 21:01:44 115

原创 AcWing1.A+B——学习笔记

思路:使用Scanner接收输入的整段字符串,以空格为分界线,分为两个字符串。再将字符串一一转化为数值,最后相加并输出。1. A + B - AcWing题库。

2022-11-06 18:53:56 138

原创 算法:堆排序(Java)

思路展示:堆排序算法(本视频来自网络,仅供个人观赏学习交流,请勿转载或商用。)import java.util.Arrays;public class heapSort { //主方法 public static void main(String[] args){ int testTime = 500000; int maxSize = 100; int maxValue = 100; boolean suc

2022-03-06 09:18:35 89

原创 算法:快速排序(Java)

思路展示:快速排序算法(本视频来自网络,仅供个人观赏学习交流,请勿转载或商用。)Java代码实现:import java.util.Arrays;public class quickSort { //主方法 public static void main(String[] args){ int testTime = 500000; int maxSize = 100; int maxValue = 100;

2022-03-04 17:26:04 322

原创 算法:归并排序(Java)

思路展示:归并排序算法讲解(本视频来自网络,仅供个人观赏学习交流,请勿转载或商用。)Java代码实现:import java.util.Arrays;public class mergeSort { //主方法 public static void main(String[] args){ int testTime = 500000; int maxSize = 100; int maxValue = 100;

2022-03-03 17:24:18 153

原创 算法:插入排序(Java)

算法展示:一分钟掌握“插入排序”Java代码实现:import java.util.Arrays;public class insertionSort { //主方法 public static void main(String[] args){ int testTime = 500000; int maxSize = 100; int maxValue = 100; boolean succeed = tr

2022-03-01 11:05:43 184

原创 算法:冒泡排序(Java)

思路展示:冒泡排序法(本视频来自网络,仅供个人观赏学习交流,请勿转载或商用。)Java代码实现:import java.util.Arrays;public class bubbleSort { //主方法 public static void main(String[] args){ //对数器检验 int testTime = 500000; int maxSize = 100; int maxVal

2022-02-28 16:48:31 229

原创 算法:选择排序(Java)

思路展示:选择排序(本视频来自网络,仅供个人观赏学习交流,请勿转载或商用。)Java代码实现:import java.util.Arrays;public class selectSort { //主方法 public static void main(String[] args){ //对数器检验 int testTime = 500000;//比对次数 int maxSize = 100; int m

2022-02-27 23:24:12 157

原创 leetcode75.颜色分类——学习笔记

题目:力扣https://leetcode-cn.com/problems/sort-colors/class Solution { public void sortColors(int[] nums) { quickSort(nums,0,nums.length-1); } private void swap(int[] nums,int index1,int index2){ nums[index1] ^= nums[index2];

2022-02-27 17:28:37 204

原创 leetcode66.加一——学习笔记

题目:力扣https://leetcode-cn.com/problems/plus-one/class Solution { public int[] plusOne(int[] digits) { int n = digits.length; for (int i=n-1;i>=0;i--) { if (digits[i] != 9) { digits[i]++;

2022-02-26 13:35:01 226

原创 leetcode59.螺旋矩阵II——学习笔记

题目:力扣https://leetcode-cn.com/problems/spiral-matrix-ii/class Solution { public int[][] generateMatrix(int n) { int target = n*n; int num = 1; int[][] map = new int[n][n]; int left = 0; int right = n-1;

2022-02-24 12:19:58 201

空空如也

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

TA关注的人

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