自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Day06哈希表基础,unordered_set,unordered_map

无序集合(unordered_set)是一种使用哈希表实现的无序关联容器,其中键被哈希到哈希表的索引位置,因此插入操作总是随机的。无序集合上的所有操作在平均情况下都具有常数时间复杂度O(1),但在最坏情况下,时间复杂度可以达到线性时间O(n),这取决于内部使用的哈希函数,但实际上它们表现非常出色,通常提供常数时间的查找操作。如果存在多对一,那就是哈希碰撞情况,可以用拉链法(如下图),用链表存储,或者线性探测法,即哈希表多些空位,遇到冲突就向下找下一个空位即可。例如数组,就是最常用的一种哈希表。

2024-05-16 10:56:47 863

原创 Day04链表||

读了题我立马就知道怎么写最简单,遍历两遍不就行了,第一遍记录长度,第二遍找正数第size-n+1个,删掉,完事,复杂度最坏也就是O(2n),再一看size范围30以内,我的手开始蠢蠢欲动了!快慢指针,fast走两步slow走一步,于是经过简单的推理,如果有环,二指针一定会相遇,且一定会在环内相遇(只有直线的话,慢指针一定追不上快指针)。思路很简单,先求两个链表长度,然后把长的那个向后移动一个长度差,接着两个指针边移动边比较,遇到相同就返回。很显然不需要,找到俩不为空的就交换,否则就不做处理就行了。

2024-05-15 17:25:40 797

原创 Day03链表的简单定义与设计、反转链表

在链表中,移出头结点和中间节点的操作是不一样的,为了统一操作,一个比较好的方法是设置一个虚拟头结点指向头结点,最后返回的时候返回这个虚拟头结点的下一个。代码非常好理解,只是我写链表操作不熟练。也就是说,如果不定义构造函数使用默认构造函数的话,在初始化的时候就不能直接给变量赋值,需要多写一行赋值语句。C++默认生成一个构造函数,可以不需要自己定义,只是不会初始化任何成员变量。链表这东西我不常用,再加上最近事情有点多,拖延症发作昨天没有搞,确实得好好学一下。删除:改动链表数据,改动指针指向就可以了,但是。

2024-05-12 16:13:03 518

原创 Day02数组2双指针学习

这道题如果是平时我就直接sort了,想练一下指针,我倒是想到了一头一尾直接比较,但是又不知道如何在本数组内修改,为难了一会儿,看看录哥思路,好嘛果然也是开新数组,那就简单了。不过是用静态数组,并且也会空出第0行第0列,洛谷上有题,代码如下。滑动窗口法,重点在于去遍历窗口的结束位置,在for循环内约束窗口,一旦超过target和值就修改窗口起始位置,并且更新长度与sum。暴力法很简单,两道循环就行,时间复杂度O(n^2),力扣会超时,我就不写了。看了录哥的方法,非常清晰,变量定义得特别合适。

2024-05-09 16:15:54 237 1

原创 算法学习DAY01,二分查找与数组修改

第一次写的时候,while循环写的l<r,样例都过了但是提交没过,错误测试点是nums=[5],target=5的情况,于是加了个等于号变成l<=r,直接过了。总结:对于左闭右闭区间(左右边界都有意义需要取到)的模板,由于边界值都是有意义的,所以l==r这一情况也有意义,必须能让它们相遇。2、nums[mid]>target时,向左边区间查找,此时r=mid,即新的区间内不打算访问r。二分我还是写得出来的,看了下分享的链接和流程,没有必要记录知识内容,直接去刷题了。双指针法的动图也特别好理解,堪称妙绝。

2024-05-08 22:44:20 275

空空如也

空空如也

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

TA关注的人

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