- 博客(13)
- 收藏
- 关注
原创 day12 栈与队列
pq.peek()[1]和pq.poll()[0]:[0]即获取第一个元素,即key,[1]获取第二个元素,即value,在该题的map中,key存储的是元素值,value存储的是出现次数。int nums1和nums2应该放在if语句里,不能放在外面(因为放最开始for循环的地方,会导致栈为空时也执行这两条语句,会报错)思路:单调队列,队列Fisrt位保持最大值,队列中元素保持递减。看懂了也写不出来代码……思路有,但是如何用小顶堆实现是个问题,代码不会写。学到的知识点:优先级队列。
2024-07-03 17:36:58
138
原创 day8 字符串
一开始的思路是count计数,i为起始点 j为第k个字符点,如此循环往复,但是涉及到字符串结尾的部分没有想明白,其实按照上述min()之后就清楚很多;简单方法就是i一次性走2*k个,一次批量处理2*k个字符,处理结束之后走到下一个2*k的区间内,即for循环内的部分。本题难点:限制条件很多,需要理解题目要求,如果字符大于k小于等于2k,则翻转前k个字符;如果剩余字符小于k个,则全部翻转。思路:先计算原字符中数字的个数,之后建一个新的字符串数组(长度为原字符长度+数字替换为number的长度);
2024-06-30 21:25:03
151
原创 day6 哈希表 待编辑
为什么不能直接用新数组存储交集:输出为包含很多个0的范围为0-1001的完整数组,正确的输出应该不带那么多0,所以要用ArrayList(但不能直接返回ArrayList)思路:用两个数组分别存储nums1和nums2的数字,之后用ArrayList存储两个数组的交集,再将ArrayList中的数字存储到新的数组中进行输出。思路:用数组记录26个字母在s中的出现次数,之后减去在t中的出现次数,最后得到的数组如果全为0则true,如果有任何一个不为零则false;知识点:ArrayList的使用。
2024-06-27 01:05:56
118
原创 day5 链表
步骤比较多,(1)遍历获得长度(2)设置长链表为A,短链表为B(3)对齐链表(4)移动指针,当currentA和currentB相等时return currentA。这题不用双指针,,每次下意识就开始用fast和slow,把问题复杂化了,一个current和很多个next足矣,记得需要用两个temp保存断掉的链表,还是要画图。易错点:两个指针相遇的节点不一定是环的入口,可能在环内任何一个节点相遇,因此不能直接re在快慢指针相等的地方return,需要单独再求出环的入口。
2024-06-26 17:34:19
157
原创 day4 链表
易错点2:return什么,while()内的判断条件是current!= null,即current==null时循环停止,此时current指向null,pre指向原链表的最后一个节点即新链表的第一个节点,所以最后return的是pre而非current。易错点1:初始化,current初始化为head,pre初始化为null(如果pre没有初始化Null则输出会的链表最后会多一个0)易错点是for循环什么情况下结束,i是小于index还是小于等于index,以及节点是从0开始计数的,更容易错了。
2024-06-24 22:39:28
234
原创 day 2 数组
易错点在于while循环内三个语句的顺序,当sum>target时,需要先计算result(去当前值和之前result的最小值),之后sum减去左值,之后left++不会写的地方是return语句,需要比较result是否超出上界,即什么时候return 0 什么时候return result。需要注意每次for循环中是哪个变量在变化,对应的行数、列数,每次for循环结束之后哪个变量需要++或--下图是leetcode题解的思路。完全没有思路 T~T。
2024-06-22 22:32:14
135
原创 day 1 -- 数组
1. 左闭右闭:[left, mid, right],while(leftmid时left=mid+1,反之right=mid-1;2. 左闭右开:[left, mid, right),while(leftmid时left=mid+1,反之right=mid;区间开闭影响到while内是否取等以及right是否-1。双指针之前看过,有点印象,需要先画图打草稿再动手敲代码。for语句写的不熟练。
2024-06-21 16:23:31
244
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人