自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣打卡day7--bfs常见题目类型一(最短路径类)

现在有 n 个传送门,你处在第一个传送门的位置,第 i 个传送门可以将你传送到第 i-a[i] 到第 i+a[i] 范围内的任意一个传送门,请问你最少需要几次操作,使得你可以传送到最后一个传送门的位置。具体的,当小明在x的位置使用传送法术,会被传送到n-x-1的位置。例如,当n=5时,如果小明在0位置使用传送法术,会被传送到4的位置。移动或使用法术都需要一步,现在小明想知道,最少几步它可以从起点走到迷宫的出口?此外,小明还有一个可以无限使用的传送法术,使用后会被传送到镜像的位置。如果无法到达,输出-1。

2025-04-07 20:27:28 589

原创 力扣打卡day6--螺旋矩阵

题目描述:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。这是一道模拟题,在做的时候我出错了两次。第一次是没有在每一行或者每一列依次遍历之后增加或减少相应的left,right等。第二次报错是没有考虑单列单行的情况,也就是后面两个for循环没有进行if的条件判断。正确代码对于第二个问题根据代码进行再思考:为什么需要在和的地方使用,特别是为什么上面两个for循环没有使用这样的判断。

2025-03-31 15:15:41 511

原创 力扣打卡day5--滑动窗口最大值

A3:在滑动窗口里面,我们的窗口大小是k,i代表当前元素的索引。窗口的左边界在i-k位置,i是当前遍历到的索引,k是窗口的大小,窗口的左边界应该是i-k+1,所以i-k是窗口外的元素(它已经超出了窗口范围,需要移除)新来的数如果更大,就要从dq.back()(右边)开始移除不必要的数,保持单调递减。给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。1、队首指的是deque的左边(front),队尾是右边(back)。dq.back()取的是队尾,即右边最后一个元素。

2025-03-27 21:21:41 375

原创 C++力扣打卡中欠缺知识查漏补缺(二)

unordered_set 和 set 类似,但底层基于 哈希表,查找复杂度是 O(1),但不支持排序。unordered_map 和 map 类似,但底层基于 哈希表,查找速度 O(1),但无序。bitset 适用于 高效存储 0/1 数据,比 vector<bool> 速度更快。map 是 有序映射表,底层基于 红黑树,适用于 存储键值对并保持顺序。priority_queue是默认大顶堆,适用于求最大/最小K个元素。pair适用于存储两个相关联的数据,如坐标、值与索引等。不适用与需要随机访问的数据。

2025-03-26 00:49:29 406

原创 力扣打卡day4--字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。这道题分享一下我的愚蠢思路,我是想到窗口了,没有想到要。

2025-03-24 20:49:24 261

原创 力扣打卡day3--盛最多水的容器&&三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。2、同1,res.push_back()里面是{},而且是{nums[i],nums[l],nums[r]}这种,不是{i,l,r}!移动较矮的指针,期待遇到更高的柱子,让 min(height[i], height[j]) 变大。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

2025-03-22 20:24:50 313

原创 力扣打卡day2-最长连续序列

一旦找到一个序列的起点,就从这个数字开始,逐步增加currentNum,每次检查CurrentNum+1是否在哈希表中。1、快速查找:哈希表的查询时间复杂度是常数级的O(1)。给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。对于每个数字找到的连续序列,我们将当前序列的长度与maxLength比较,更新最长连续序列的长度。例如,如果num是3,但2不在哈希表中,那么3就是一个新的序列起点。对于数组中的每个数字num,检查它是否是一个连续序列的起点。

2025-03-21 14:25:02 369

原创 机试中常用的C++知识(一)

数组(C风格字符串)(注意是char str[] = "hello")C++有两种字符串:C风格字符串(字符数组)和。用来在创建对象时初始化属性,方法2:string类型。用来在对象销毁时执行操作。

2025-03-20 21:35:53 343

原创 力扣打卡day1--两数之和

💡想法:现在的总存款是sum,想要找的是之前某个时刻的存款sum-k,如果之前真的存过sum-k,那说明从那时到现在,正好加了k,就找到了一个符合的子数组。可以用“存零钱”的方法理解,可以把前面的所有的数加起来,记成存款,而我们想知道的是过去有没有存款和刚好等于sum-k。用哈希表unordered_map<int,int>统计每个数出现的次数,发现某个数的频率超过n/2,直接返回。(1)常用操作:初始化,查询操作,添加键值对和删除键值对。方法1注意是j=i+1,不要从j=1开始写。计算某些区间的和,如。

2025-03-19 10:57:02 226

原创 Windows版本Cursor的工具栏怎么变成竖排的

Windows版本Cursor的工具栏怎么变成竖排的

2025-02-28 17:17:05 2129

原创 顺序栈与链栈

/元素从栈顶蹦出,栈顶指针下移(先S.top--,再*S.top = e)*S.top++=e;//插入新的元素,栈顶指针上移(先*S.top = e,再S.top++)顺序栈:进出栈:O(1) 清空栈:O(1)链式栈:进出栈:O(1)清空栈:O(n)(1)链栈中指针的方向是从栈顶指向栈底。以下操作中S.top均指向的是。链栈中一般不设头结点。

2023-09-22 21:05:18 239 1

原创 循环队列随笔

1.定义结构体SqQueue Q,Q中有rear,front两个指针(rear指向队尾,用来进:Q.rear = (Q.rear + 1)%MAXSIZE;front指向队首,用来出:Q.front = (Q.front +1 %MAXSIZE 和一个储存队列值的数组data[MAXSIZE];3.判断循环队列是否满了,用(Q.rear + 1)%MAXSIZE == Q.front;2.判断循环队列是否为空,用Q.rear == Q.front;深知自己的代码水平依托答辩,欢迎指错!

2023-09-22 18:47:28 118 1

原创 数据结构双向链表的插入

那么就可以把过程简化为:先搞定s的后继(因为p是s的后继,它是确定的,s喜欢已经确定了的东西),再搞定s的前驱(就是p->prior),接着搞定前结点的后继,最后搞定后结点的前驱(p一定要是最后动的!那就是:先搞定s的前驱(因为p是s的前驱),再搞定s的后继(就是p->next),接着搞定后结点的前驱,最后搞定前结点的后继(前结点是p,要最后搞)。想了好久哇终于想明白了!首先,分为两种情况。

2023-09-20 15:00:55 422 1

原创 Python笔记第三章

2.元组支持使用下标访问特定位置的元素,也支持双向索引,但是元组是不可变序列,不能对元组某一个索引值重新赋值,如x[1]=2。同样,元组也没有remove()和pop()方法,不支持对猿族元素进行del操作,不能从元组中删除元素。访问时只能从前往后访问,没有任何方法可以再次访问已访问过的元素,也不支持使用下标访问其中的元素。当所有元素访问结束之后,如果需要重新访问其中元素,必须重现创建该生成器对象,enumerate,filter,map,zip等其它迭代器对象也具有这样的特点。

2023-09-19 12:47:18 1037

原创 python学习笔记第一周

filter()函数,注意python3返回值是一个迭代,自我认为map和filter函数的用法和作用差不多!map对象属于迭代器类型,其中每个元素是原可迭代对象中元素经过func处理后的结果,不对原可迭代做任何修改。isinstance()函数。

2023-09-18 23:17:02 108

原创 牛客刷题-最长无重复子数组

牛客刷题:最长无重复子数组

2023-08-05 14:45:00 124 1

原创 牛客-最小覆盖字串

牛客刷题记录,最小覆盖子串

2023-08-04 22:22:04 139 1

原创 山东大学可达鸭杯程序设计比赛J题题解

这道题刚开始做的时候就只想到了用map记录频率,因为自己太菜了所以写了几行后觉得实现不了就放弃了,后续看了大佬的方法豁然开朗,本质就是用两个map储存:一个用来存储上下两面数字出现的次数,另一个用来存储上面的数字的出现次数,因为是要将牌翻到上面,必然涉及到上面数字出现次数的问题,故要建立map单独存储。接下来n行,每行两个非负整数ai,bi,表示每张牌上写的两个数字,aii​对应朝上的一面,bi​对应朝下的一面。注意:在翻牌的时候,你不能把牌扔掉,不能偷偷把别的牌放进来,也不能用笔涂改牌上面的数字。

2023-04-10 11:13:06 485 1

空空如也

空空如也

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

TA关注的人

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