自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 28.哀家要长脑子了!

前几天拖着没写的题解和今天写的。

2024-05-15 23:10:29 256

原创 27.哀家要长脑子了!

哎哟 烦死了 刚刚不小心退出又没保存 又要写一遍烦死了 最近刷题不得劲啊 感觉这脑子没长一点。

2024-05-15 21:06:37 251

原创 26.哀家要长脑子了!---单调栈

这意味着从索引st.top()代表的那一天开始,直到现在的索引i,我们首次遇到了一个更高的温度,因此,我们可以确定在st.top()这一天之后的i - st.top()天,有一个更高的温度出现。当此时的栈不为空,并且此时遍历的温度大于栈顶的温度(即栈中最大的温度)循环以下操作:将当前的温度下标减去栈顶元素的下标,然后栈顶元素的下标就是此时所计算的那一天。如果栈不为空并且,此时遍历的数字大于栈顶中的数字,我们就可以把栈中比此时数字小的数字弹出,因为我们要找的是下一个比它大的数字,比他小的肯定不行啊。

2024-05-11 22:34:49 256

原创 25.哀家要长脑子了---哈希表

用一个counter来记录nums中0、1数量差值的变化。哈希表map存储某个特定的counter值首次出现的位置。counter的计算:出现1就加1,出现0就减1。第二次出现同样的counter值意味着从第一次出现的counter位置到第二次出现的counter位置中间出现的0和1的次数一样了 才会导致同样的counter值出现第二次。为什么map[0] = - 1 而不是map[0] = 0呢,我理解的还不是很清白。是为了第一个位置开始就平衡的情况。在我对通义千问的一番折磨下,终于弄清楚一点点了。

2024-05-06 22:32:20 158

原创 24.哀家要长脑子了!---哈希表

哈希表cnt中记录的是,在不同水平位置上的累计砖块宽度值出现的次数。这里的”累计砖块宽度值“指的是从墙最左边开始到某个点为止,所有砖块宽度的和 (但不包括最后一块砖的宽度,因为我们关心的是缝隙的位置),就是找缝隙。代表它出现的次数少一次了。然后判断一下左边的是不是比右边的小,如果是的话就把左边这个数字变为负的,嗯,就是酱紫,为什么你不会做。以上图中的样例为准,一行一行遍历得出的map就是这样子的 意思就是,第1块砖后面有缝隙的有3行,第3块砖后面有缝隙的有2行,第5块砖后面有缝隙的有2行,以此类推....

2024-05-04 11:53:08 258

原创 23.哀家要长脑子了!

for循环遍历关规律pattern中的每个字母,如果进入循环后,发现单词的起点已经大于s的长度,说明字符串s中的每个单词已经遍历完毕,但是pattern还没有遍历完毕(因为进入了for循环)说明s的长度大于pattern,out。因为k是题目要求的差值的绝对值。

2024-05-04 10:20:55 789

原创 22.哀家要长脑子了!

为什么要这样呢,因为这样可以区分这个这个键值是否被设置过,如果是0就是没有被设置过的,如果不是0就说明是设置过的有元素的。比如:get方法查询一个键时,由于返回的是map[key]-1,对于已经被删除的键(值为0)会得到0 - 1 = -1,这可以作为一个标志,表明该键不存在或者已经被删除。当链表长度为偶数是:fast指向链表最后一个结点的下一个结点,即fast为空,slow指向中间两个结点的第二个结点。如果不+1,那么存储0的时候就无法判断是设置过的还是没被设置过的,-1是因为存储的时候+1了要还原。

2024-05-01 23:06:43 305

原创 21.哀家要长脑子了!

要按升序连接,以链表2头结点作为开端,哪个小就先连接哪个,然后把此时操作的链表的指针往后移,同时遍历新链表的指针也要往后移。我做过啊,为什么还是不能独立做出来,为什么为什么啊啊啊 嘻嘻奔向五一。

2024-04-30 22:31:16 93

原创 20.哀家要长脑子了!

其实我每次首先都搞不懂这种循环取模操作 循环队列 上次那个旋转数组 还有蓝桥云课里面的题。是不是要时时回过头想一想看一看,还是我没有彻底搞懂,囫囵吞枣,一知半解,似懂非懂。这个题我也觉得挺有意思的,还有种很熟悉的感觉,似曾相识,但是我又说不出。这个我觉得巧妙的点是:add = n - k % n 找断开的位置。以前做过旋转数组,但是。你忘得干干净净小姐姐。抱一丝哈抱一丝 我就是直接先两个链表反转 求出结果后在反转的。我发现做过的题,老是不记得,就像这个反转链表。最关键的是这个carry!

2024-04-29 23:25:48 194

原创 19.哀家要长脑子了!

而赎金信需要判断的字符串ransomNote能不能由magzine里的字符构成,也就是说,在ransomNote中出现的字符,一定要在magzine中出现。于是就有两个要注意的点,第一个是要先遍历magzine,而不是ransomNote,第二个就是不能单纯的直接判断字母是否出现过,而是要判断ransomNote里的字母是否在magzine里面出现过。基于相同的元素不要有相同的三元组解。这道题目很像,但是有不一样,有效字母只是单纯的计算字符串s中的字母出现的次数是不是跟字符串t中的字母出现的次数相同。

2024-04-29 09:24:47 115

原创 18.哀家要长脑子了!

使用标记数组的话,先遍历一边nums1数组,把num1数组中有的元素标记为1,再遍历一遍nums2数组,nums2数组的元素作为flag数组的下标,如果此时元素值不为0,说明该元素(下标)在nums1中出现,可不就是交集吗。用一个flag数组,s出现的 加!这样s和t中每个字符出现的次数相同的话,就会加多少减多少,flag数组的元素值都会是0。使用set的话,先把nums1数组中不同的的元素放到set里面,再遍历一遍nums2。// 如果在s中没有找到num就会返回set中最后一个元素(end迭代器)

2024-04-28 22:17:22 199

原创 17.哀家要长脑子了!

双指针移动的巧妙在于好像把他们两个放在了一个环里面,谁先到了就让他从另一个链表开始,然后,去追逐刚刚那个走的慢的,他们总会在相交点相遇,说实话还不是很理解。每次写的代码倒是看得懂就是自己写的时候,老是搞不清楚这种迭代遍历交换的顺序和到底什么是时候跳出循环。分别设置pa、pb指针遍历链表a和链表b,如果两个链表不相交,那么到最后都会遍历到末尾变成空指针。要交换那就交换咯 用一个空的虚拟头结点,通过这个头结点来控制后一个结点,后后一个结点。妙啊妙啊 怎么想到的 为什么我没想到。哎哟我去有点晕啊有点晕。

2024-04-23 23:13:05 203

原创 16.哀家要长脑子了!

看不太懂题,后面看题解发现,题目中给出这个哪个结点就删除哪个结点,不会给出整个链表,那你直接对这个结点操作就好。i++) 或 for(int i = 0;下次想到办法就先自己动手试试,不管会不会,先试试,再去看题解,像这个你自己的思路就是对的,要自信呀。这我都懂,但是,一让我动手写代码我就不会了TAT TAT TAT TAT TAT TAT。用一个空结点当头结点呀~~ 这样子如果需要删除的是头结点的话,就不需要进行额外操作了。单链表要删除结点,但是又不知道是正数第几个,没办法咯,只能先求出链表长度。

2024-04-22 20:51:34 235

原创 15.哀家要长脑子了!

旋转图像就是行列转置,经过以对角线为轴的变换之后,行元素已经变成了列元素,但是我们会发现还没有达到顺时针旋转90度的效果,是因为这是逆序的,所以还需要将元素从左到右边进行反转。在b站学的那个方法太繁琐了还要额外判断第一行第一列,但是很好的帮助我去理解二维前缀和。aaaaaaaaaa 我发现我还是没有真正搞懂这个二维前缀和 我只能先死记一下。旋转90度,先以对角线为轴进行交换,再以中间轴(中垂对角线)左右交换。哎哟 我去 我感觉就是考对代码掌握的熟练程度 我。先遍历矩阵,遇到0的就把那一行那一列做个标记。

2024-04-21 23:42:11 246

原创 14.哀家要长脑子了!

当遇到X的时候,就把X变成. 然后把X身边的X也变成. 怎么变,垂直方向:从它的右边开始(k=i+1)遍历到矩阵边界,我说为什么不从左边,因为它是一遇到X就开始这种操作,那么一遇到的肯定就是最左边。这个是垂直方向的判断,意思就是:当这个位置是X并且旁边有地方可以判断时,就判断一下,如果它上面是X说明这个军舰是上一艘军舰的延续部分,已经被计算过了不用再计算,跳过。大于n时,对角线的起点是从最后一行的某一列开始,起点横坐标:m-1 纵坐标:i-m+1。将一个m x n的矩阵变成 r x c的。

2024-04-21 13:55:51 1105

原创 13.哀家要长脑子了!

第二个for循环 是通过对数组元素值打标记(添加负号),待会来判断数组下标是否出现过,如果num在有效范围内,则尝试访问num代表的那个正整数在理想状态下应该所在的数组位置。官方题解是把数组元素插入到set集合时,只要大于3就把前面的元素移除出集合,最后留在set集合里面的就是剩下最大的三个元素了咯 最后返回的时候,如果set集合长度大于3就输出第一个元素(三个里面最小的,第三大),小于三就输出最大的元素即最后一个。排序后:每个位置的元素等于其下标加1,如果不是的说明是重复的元素。

2024-04-17 20:28:40 251

原创 12.哀家要长脑子了!---数组

让每个元素都加上数组的大小是因为这样所有出现的元素都会大于数组的长度,如果在后期遍历时,发现某个数组数值小于等于数组长度,那么它的初始值是0,他一定没出现过,它就是那个消失的数字!那么这个元素本身可能是在数组里的,题目要求求与原数组度相同的最短的子数组,那么就让第一次出现的位置与最后一次出现的位置得到距离最小就好。是因为这个元素值是从1开始,数组下标从0开始,还要判断是不是最后一个元素重复的,我老是搞不清,我是真的不清白啊。把k个元素旋转放到前面,前面n-k个元素是向后移动的。哎哟,感觉这些题目好奇妙啊。

2024-04-16 22:10:32 394

原创 1.老师我太想进步了——些些芝士点

这里,sprintf函数的作用是将整数h和m格式化为一个符合时间个格式("HH:MM")的字符串,并将结果存储在字符数组ans中。用于将格式化的数据写入字符串中。

2024-04-15 22:38:14 170

原创 11.哀家要长脑子了!---数组

1.2.3.4.5.

2024-04-15 22:14:34 857

原创 10.哀家要长脑子了!-代码随想录day01

如果左指针平方后的元素小于右指针平方后的元素,就先把左指针平方后的元素放入结果集,然后左指针向右移动;如果右指针平方后的元素小于左指针,就先把右指针平方后的元素放入结果集,然后右指针向左移动;但是如果此时将左指针前移动,左指针指向的值不是val,右指针指向的值不是val,此时循环又将左指针往后移了,但是右指针的值不是val;因为不能开辟新的空间,所以考虑用双指针,左指针的值等于val就跟右指针交换放到右边去,然后再把左指针往前移一位,右指针向前移动一位,继续寻找指向不等于val的元素。

2024-04-14 22:37:38 691

原创 9. 哀家要长脑子了!

从第一层的第一个结点开始搜索,如果这个结点的元素值是空的,说明这个结点没有子结点,这个结点是叶子结点,需要累加能量果了。一边输入一边构造标记数组,是S—马的起始位置,走过了不能走,标记为1;我觉得这道题深度搜索体现在:对于每个点都进行入队出队操作,它的下一个点也是同样的操作,并且它的下一个点有八个选择,每个选择都需要进行这样的 操作和判断。{-2, 1}, {-1, 2}, {1, 2}, {2, 1}, {2, -1}, {1, -2}, {-1, -2}, {-2, -1} 酱紫的。

2024-04-10 17:40:29 468

原创 端盒日记Day03

vocal!!拖了这么久我才来写,我好Dior。刚刚吃了四根冰淇淋我好Dior。。。

2024-04-07 21:34:41 763

原创 8.哀家要长脑子了!

脑子快快长!

2024-04-06 23:22:47 359

原创 7.哀家要长脑子了!

这个题当时有40%过不了有两个原因,一是当时数组开的太小了,二分我把middle定义在了外面,应该要定义在里面,但是我不明白为什么不能定义在循环外,文心一言这老弟说不出个所以然来。先把昨天解决的二分问题给写了,就是前几天那个寻找食物储量的问题。注意:这里一定不能写成左闭右闭。

2024-04-05 23:25:51 467

原创 6.哀家要长脑子了!

在[first, last)区间中二分查找第一个大于等于target的元素,返回的是last元素地址, 将其减去数组首元素地址可以得到该元素的下标,注意找的是第一个大于等于target的元素,如果没有相等的值,就会返回大于它的值,数组一定要是排好序的数组,因为这里面是二分查找。1. first和last为输入迭代器,用于指定该函数查找的范围,是一个前闭后开的区间,val为要查找的目标元素,指向范围内搜索元素的第一次出现,如果没有找到目标元素,则返回last,返回最后一个元素。返回的是下标啊下标。

2024-04-05 09:46:49 806

原创 端盒日记Day02

console.log(newArr) // ['red颜色', 'blue颜色', 'green颜色']console.log(arr.join('')) // red颜色blue颜色green颜色。const arr = ['red颜色', 'blue颜色', 'green颜色']存储数据:localStorage.setItem('key', 'value')删除:localStorage.removeItem('key')获取数据:localStorage.getItem('key')

2024-04-04 23:12:26 651

原创 5.哀家要长脑子了!

看了题解之后,它的思路是这样的:用一个pair装数组(还有的用结构体也可以)然后先输入把数字定义为second,代价定义为first,这样输入的时候第一个输入的是数字,但在存储的时候代价就是第一个成员;字符到整数的转换,在ASCII编码中,数字字符是连续排列的,例如,字符'0'的ASCII值是48,字符'1'的ASCII值是49,依此类推,知道字符'9'的ASCII值是57。然后按照所给公式计算所得分数。那么i剩下的是 i - a * a,第二个平方数字b一定在a的范围内,我们只要验证b是不是整数就好了,

2024-04-03 22:41:15 1394

原创 4.哀家要长脑子了!

首先间隔分组,然后组内排序,再把间隔取为原来的一半,不断重复直到间隔为1。我觉得希尔排序就是一个跨度比较大的插入排序。

2024-04-03 07:39:49 95

原创 计算机组成原理——系统总线

图中总线传输周期是连接在总线上的两个部件完成一次完整且可靠地信息传输时间,它包含4个时钟周期T1 、T2 、T3 、T4。若多个主设备同时要使用总线时,就由总线控制器的判优、仲裁逻辑按照一定的优先等级顺序确定哪个主设备能使用总线。在三总线结构中,任意时刻只能用一种总线,主存总线与DMA总线不能同时对主存进行存取,I/O总线只有在CPU执行I/O指令时才能用到。总线是连接多个模块的信息传输线,是各部件共享的传输介质,是信号的公共传输线。地址总线:单向,与存储地址,I/O地址有关,由CPU/主设备发出。

2024-04-02 23:29:08 898

原创 3.哀家要长脑子了!

如果正面数字大于负面数字difs数组对应元素的值就会是负数,如果正面数字小于负面数字difs数组对应元素的值就会是正数,将difs数组从大到小排序。如果第一个元素是偶数,那么就遍历原数组,如果原数组中含有奇数,那么就构成不了偶数的美丽数组,n==k-1意思是遍历到最后一个了。关键的点是:想要花费最少的能量,就用最小能量的传送阵作为中心,这样每次加的时候都是加的最小的。把原数组从小到大排序,所构成的美丽数组是奇数还是偶数取决于最小的,也就是原数组的第一个元素。首先知道:奇数减奇数得到偶数;

2024-04-01 23:34:50 1295

原创 端盒日记Day01

BOM对象是个浏览器对象包含navigator、location、document、history、screen。: 1.延时器需等待,所以后面的代码会先执行(体现异步)2.每次调用延时器都会产生新的延时器。定时器-延迟函数:let timer = setTimeout(回调函数, 等待的毫秒数)平面转换:transform: transolate(X轴移动的距离, Y轴移动的距离)JS执行机制:单线程 事件循环 执行栈 任务队列(消息队列)删除节点:父元素.removeChild(要删除的元素)

2024-04-01 23:32:19 151 1

原创 2.哀家要长脑子了!

这道题的check函数:是后一棵树的与前一棵树之间的距离要大于等于mid是就可以种一棵树,然后遍历完这条直线上的坑看这个mid满不满足要种的树的数量M 如果mid小于M 说明间隔距离mid太大了 种的树的数量不够 mid要小一点;是这样的,首先先算出洛洛晶晶各自通关需要多少个水晶,比如样例中晶晶通过前1关需要1个水晶 ,通过前两关需要3个水晶。星期五在拼夕夕上买的小福饼那么大一个,跟个月饼样,味道一般吧 就是太饱肚子了,我对饼又没自控力,一吃吃好多,还吃了两个法饼,两个杏仁饼,难受我一天TT。

2024-03-31 23:31:11 305

原创 1.哀家要长脑子了!

给定一个n,就从1到n遍历,只要含有2、0、1、9的就把它加起来 但是注意 加完就要break了,因为满足多个条件的只能加一次。我就是想遍历这个二维数组,然后把他们的值作为一个新开的一维数组的的下标(可以想成一个桶子)然后一边放一边看 看哪个桶子里面的数字超过了这个矩阵的一半大小。他把这个矩阵用一维数组来存储,然后对其进行排序,如果谁超过了一半,那么肯定包含这个一维数组最中间的那个数字,直接输出中间那个数字。3.怎么反过来:不断取出个位上的数字(通过%10来实现) 然后把它往前移(通过*10来实现)

2024-03-31 12:05:18 219

原创 PTA数据库补题6-7 | 表操作

现有一张试卷作答记录表exam_record,结构如下表,其中包含多年来的用户作答试卷记录,由于数据越来越多,维护难度越来越大,需要对数据表内容做精简,历史数据做备份。请把exam_record表中2021年9月1日之前开始作答的未完成记录全部改为被动完成,即:将完成时间改为'2099-01-01 00:00:00',分数改为0。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。试卷作答记录表exam_record中,表已建好,其结构如下,请用一条语句将这两条记录插入表中。

2023-12-05 21:52:25 77

原创 PAT数据库补题6-7

如果在有group by语句的操作中,select后接的结果集字段只有两种,一种是包含在gruop by语句中的;另一种是在聚合函数操作中的字段。id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',exam_id int UNIQUE NOT NULL COMMENT '试卷ID',exam_id int NOT NULL COMMENT '试卷ID',

2023-12-05 11:25:26 42

原创 代码随想录算法训练营第30天 | Leetcode77.组合、Leetcode216.组合总和Ⅲ

1.参数列表没有确定好,sum应该是带着原来的值每一次递归进去的,而不是放在函数里面每次重新清零。3.只要当所求sum大于题中所要求的n后就没有必要对以后的元素继续进行搜索了。知道怎么选和递归回溯了,但是剪枝还不太清白。4.可以剪枝,for循环怎么优化。2.sum也需要回溯。

2023-11-23 22:10:29 38

原创 代码随想录算法训练营第29天 | Leetcode491.递增子序列

【代码】代码随想录算法训练营第29天 | Leetcode491.递增子序列。

2023-11-22 20:39:49 30

原创 代码随想录算法训练营第28天 | Leetcode93.复原IP地址、Leetcode78.子集、Leetcode90.子集Ⅱ

【代码】代码随想录算法训练营第28天 | Leetcode93.复原IP地址、Leetcode78.子集、Leetcode90.子集Ⅱ。

2023-11-21 21:51:05 36

原创 代码随想录算法训练营第22天 | Leetcode235.二叉搜索树的最近公共祖先

一定要充分利用二叉搜索树是有序的这个特性。

2023-11-15 21:48:21 47

原创 代码随想录算法训练营第21天 | Leetcode530.二叉搜索树的最小绝对差、Leetcode501.二叉搜索树中的众数

思路一:由于二叉搜索树的特性,进行中序遍历后所得到的是一个从小到大的有序数组,所以可以开辟一个数组空间,将元素依次有序放入后,再遍历一遍得到最小绝对差。思路二:不需要格外开辟一个空间,运用双指针,一个指针指向前一个结点,一个指针指向后一个结点,用两个指针计算差。思路:在树中用双指针前后比较。主要就是中序遍历的两个版本。代码复现:记得移动指针!

2023-11-14 21:34:39 90 1

空空如也

空空如也

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

TA关注的人

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