自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 两数之和2

因为如果 nums[i] 和 nums[l] 固定,那么满足情况的解,nums[r] 也一定是同一值。数组有重复数字,需要输出所有符合要求的数字对,比如:target = 8 [1,7,2,6,2,6],返回 [1,7] [2,6]。,以及一个目标值target。,使得 nums[l] 的值不固定,那么 nums[r] 也一定是不同的值。还是要额外判断, l== i+1 表示刚开始双指针,此时 l 左边没有数字。命中时分为两种情况,1. 两个数相同 2. 两个数不同。给定一个可能包含重复元素的。

2025-07-15 20:49:37 354

原创 二叉树锯齿形层序遍历

针对偶数行元素,但是这个操作有点费时间。因此,可以在添加一个一个的元素时就进行判断,利用双端队列的优点,既可以 addFirst,又可以 addlast,实现更快的反转。栈模拟:使用两个栈,第一个栈中节点的孩子从左到右存入另一个栈,那么另一个栈的输出就是从右到左了。另一个栈中节点的孩子从右到左存入第一个栈,那么第一个栈的输出就是从左到右。优化:其实两种方法都有问题,栈模拟需要使用两个栈,代码还复杂,队列的方式就是在层序遍历的基础上使用。思路:层序遍历的基础上,偶数层输出结果时需要。,也可以使用栈来模拟。

2025-07-15 15:14:00 281

原创 两数之和1

像类似的题目,取值范围在10^9,但是数组长度只有 10^5、 10^4 这种,就可以使用手写哈希。//我的理解是可以把邻接表看成。,提交的测试结果甚至会更慢。

2025-07-14 20:55:37 368

原创 【刷题日记】2025/7/10

都是负数会影响二段性(窗口右值移动,乘积增加或不变,窗口左值移动,窗口减少或不变),使得滑动窗口难以解决。思路:窗口的乘积不满足二段性,使得滑动窗口方法难以解决,可以从一般情况出发思考状态转移方程。,但是会发现只记录最大值是不管用的,因为负负得正的原理,整体思路就是统计数组中正数,0,负数的个数。,最终答案为dp_max中的最大值。

2025-07-10 16:58:30 265

原创 【刷题日记】2025/7/9

思路:矩阵的题目一般不会轻易想到使用动态规划来解题。但是矩阵题目经常是要求 dp[i] [j] 时,会从 dp[i-1] [j] ,dp[i] [j-1] 和。(一维的题目,一般要求 dp[i] 时 ,会从 dp[i-1] 入手)。dp[i-1] [j-1] 入手。符合之前说的几个入手点。

2025-07-09 11:48:18 337

原创 【刷题日记】滑动窗口小结

的问题(中途使用字符串来记录答案),如果是返回单个串最好是记录左右端点下标(start,end);有些题目看起来窗口是固定的,但是还是可以使用不固定的窗口来解题。(一般是初始化窗口为固定大小,然后每次循环,左值右值同时后移,过程中维护、判断字符条件等)【left,right】维护一个这样的窗口,其中左值和右值均只能向后走,不能回头,问题在遍历过程中解决;,窗口右值移动,x 增加或不变,窗口左值移动,x 减少或不变。但是,有的题目不满足二段性质还是可以使用滑动窗口,有时会。这里的 x 可以是区间中的。

2025-07-07 15:23:12 289

原创 【刷题日记】2025/7/6

因此,选择使用两个变量 (start,end) 来记录答案,只有在结尾执行。,而是通过 whlie 循环,判断峰值的下标是否超出窗口,如果超出则进行。值得注意的是Java中没有 Pair 类型,需要自己定义,并写比较器。的代码思路,设置了一个 match 来记录需要匹配的字符种类,对于。(当然了,链接中的题目也可以把重复的字符看成多种)。思路:因为需要维护窗口中的最大值,一开始想到用。中重复字符,我这里算作了多种,这样就转变为。,进一步思考,可以想到:如果优先队列中还。,但是会超出时间限制,大概是因为。

2025-07-06 16:47:34 424

原创 【刷题日记】2025/7/5

滑动窗口:先通过【窗口长度不符合–执行continue】的方式填充初始窗口,接下来每次循环中,一边把右值的字符加进来,一边把左值的字符删去。有两个数组【[ ]map,[ ]ans】来记录,一个记录标准答案,一个记录实时的情况,时,表明窗口记录的情况不符合答案,需要左值移动,清除某些记录的字符,直至符合答案。滑动窗口:先用[ ]map数组来记录标准答案,遍历过程中进行。,因此还可以想到固定长度滑动窗口的方法。,然后在遍历时维护 match ,来记录。时,表明窗口命中了答案。,表明窗口命中了答案。

2025-07-05 16:02:13 317

原创 【刷题日记】2025/7/4

因为是最近最久未使用-先淘汰的方法,所以每次读完后需要把刚读的这个元素移动到首位,让它最后淘汰,其余的元素后移。这个操作需要大量的移动(如果用数组的话),因此考虑使用链表。增加了一个节点失效的时间,超过该时间节点自动失效,其他与原题相同。,通过返回的尾节点的 key 值再从 map 中删去对应值。将某个节点移动到链表头部或者将链表尾部节点删去,都要用到。可以假设:最近使用的排在队头,最久未使用的排在队尾。因为删去最近最少使用的键值对时,会先删去链表中的。,写的话可以考虑链表结构。

2025-07-04 16:56:08 900

原创 【刷题日记】2025/7/2

那么类比这种思想:当某字符出现的频率 > k 时, 要让窗口左值不断移动,并在过程中。,只需要要让窗口左值不断移动,并在过程中清除 set 中的值就可以解题。类比最先未扩展的问题,原题相当于 k=1 ,每个字符只允许出现一次。要求把所有的最长子串都返回(包括重复出现) ,复杂度 O(n)。可以想到:把原先用来记录某字符最后出现位置的数组转换为。那如果【至多有 K 个重复字符的最长子串】呢?,而且原题中的第一个方法使用的是 set ,即。,返回最长子串的长度,其中。

2025-07-02 19:20:46 659

原创 【刷题日记】2025/7/1

给一个数组,以及一个数:如 [1, 3, 4, 3, 9, 1], k = 12, 返回其中最短的大于等于 k 的子数组长度。的暴力方法,两个for循环,j 从 0 到 length ,i 从 0 到 j。滑动窗口在right++时窗口内数组和的值可能会减小,即滑动窗口方法失效。拼多多,要求不能自己定义变量,最后优化到使用nums数组自己定义的空间。(索引为i 到 j 的数组和),于是可以很简单的想到复杂度为。例如:[-1 -1 100 -1] ,target:100。:前缀和 + 单调队列,复杂度为。

2025-07-01 21:49:03 441

原创 【刷题日记】2025/6/30

给一个数组,以及一个数:如 [1, 3, 4, 3, 9, 1], k = 12, 返回其中最短的大于等于 k 的子数组长度。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。动态规划可以进一步简化,因为公式中只在(i-1 , i)中进行转态转移,可以设置。,当 dp[i-1] 为负值时,dp[i]=nums[i] ,为正时是。// 因为最短的是 [3, 9] 长度 2。最终的结果为dp数组中的最大值。变量n,用n记录dp[n]是数组中的一个连续部分。:dp[i] 数组的。

2025-06-30 22:10:41 148

原创 【学习OR面试】HashMap

一种自平衡二叉查找树,但是条件没平衡二叉树那么严格。5点每个节点要么是红色,要么是黑色;根节点永远是黑色;所有的叶子节点都是是黑色的(NULL 节点);红色节点的子节点一定是黑色的;从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。( 不走回头路)任意一条路径不会超过另一条路径的两倍长度。AVL树查,插,删也是O(log n)。但是查找更快,树高度更矮;插入删除更慢,需要处理更多的旋转(红黑树需要的做法是旋转与染色)。

2025-06-26 13:29:08 1040

原创 【学习OR面试】请你介绍一下线程池(1)

解决问题:在并发环境下,系统不能够确定在任意时刻中,有多少任务需要执行,有多少资源需要投入。总结:线程池是用来管理和复用线程的工具,它可以减少线程的创建和销毁开销。用途:管理和复用线程,减少线程的创建和销毁开销。

2025-06-25 18:37:22 402

空空如也

空空如也

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

TA关注的人

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