自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 哈希表(转载)写得特别好

之前说的开放寻址法采用的方式是在数组上另外找个新位置,而拉链法则不同,还是在该位置,可是,该位置被占用了咋整,总不能打一架,谁赢是谁的吧😂,当然不是这样,这里采用的是链表,什么意思呢?小白: 我觉得应该是哈希函数吧,经过上面的讲解,我觉得,如果一个哈希函数设计的足够好的话,就会减少哈希冲突的概率,如果设计的不好,那就会经常撞衫😂,那就很影响性能了,比如刚开始我们举的那个例子,拿姓名的首字母来确定位置,这个哈希函数的设计就不咋滴,比如王二,王三,王四什么的,这都会冲突啊😂。那么这个扩容是怎么扩的呢?

2024-04-08 19:34:42 20 1

原创 终极排序(快排,归并,库函数)

1、确定分界点:q [ l ] , q [ ( l + r ) / 2 ] , q [ r ] ,或者其它区间之中的随机数。(左 l 右 r )2、调整区间:(较难理解的部分)(1)、暴力做法(1)开两个数组a[ ] b[ ](2)扫描 q [ l ] ---> q [ r ]整个区间(2)、优雅做法hhh用两个指针 : 左边 i 指针 右边 j 指针(1) i = x 时停下。

2024-03-04 20:06:42 384

原创 链表 迭代方式实现链表反转

在每一次循环中,先将 next 指针指向当前节点 current 的下一个节点,以便在修改当前节点的 next 指针时不丢失对下一个节点的引用。函数首先动态分配一个新节点 temp,然后将新节点的数据域 data 设置为传入的数据,将新节点的指针域 next 设置为 NULL。将 current 指针指向链表的头节点 head,将 prev 初始化为空指针,表示当前节点的前一个节点为空。循环结束后,将链表的头节点指针 head 更新为反转后的链表的头节点 prev,然后返回 head 指针。

2024-02-24 19:27:39 1884

原创 链表 删除链表中任意位置的节点

【代码】链表 删除链表中任意位置的节点。

2024-02-24 17:42:55 398

原创 链表 任意位置插入一个节点

/任意位置插入一个节点int data;//等同于struct Node* temp1=(struct Node*)malloc(sizeof(struct Node*));//不管现在头部是什么 调整此变量以指向新的头部return;//对于其他情况,我们首先要转到第n-1个节点//创建一个指向节点的指针 命名为temp2//从头开始 运行一个循环并到达第n-1个节点i

2024-02-23 14:32:08 404

原创 链表头部插入一个节点

【代码】链表头部插入一个节点。

2024-02-23 10:58:52 399

原创 链表的C/C++实现

【代码】链表的C/C++实现。

2024-02-23 10:52:13 450 1

原创 链表基础知识汇总

链表是一种基本的数据结构,是由一系列节点组成的集合。每个节点包含两个部分:值和指向下一个节点的指针。链表中的节点可以动态地添加、删除,其大小可以根据需要进行扩展或缩小。链表通常用于处理不固定长度的数据结构,具有插入、删除等操作效率高的优点。与数组相比,链表在随机访问时性能较低,但在增删操作时更为高效。1存储方式:数组在内存中按照地址顺序依次存储,而链表通过节点之间的指针连接起来。2访问方式:数组可以通过下标直接访问其中的元素,时间复杂度为O(1),而链表需要遍历整个链表才能找到特定节点,时间复杂度为 O(n

2024-02-13 15:19:58 446 1

原创 #include <map>

map容器是一个键值对key-value的映射,其内部实现是一棵以key为关键码的红黑树。Map的key和value可以是任意类型,其中key必须定义小于号运算符。我们可以很方便地通过h[key]来得到key对应的value,还可以对h[key]进行赋值操作,改变key对应的value。与set类似,但其参数均是pair<key_type, value_type>。h[key] 返回key映射的value的引用,时间复杂度为O(logn)。h.find(x) 在变量名为h的map中查找key为x的二元组。

2024-02-08 10:36:02 551

原创 #include <set>

set和multiset的迭代器称为“双向访问迭代器”,不支持“随机访问”,支持星号(*)解除引用,仅支持”++”和--“两个与算术相关的操作。时间复杂度为O(logn)。设x是一个元素,s.erase(x) 从s中删除所有等于x的元素,时间复杂度为O(k+logn),其中k是被删除的元素个数。s.count(x) 返回集合s中等于x的元素个数,时间复杂度为 O(k +logn),其中k为元素x的个数。设it是一个迭代器,s.erase(it) 从s中删除迭代器it指向的元素,时间复杂度为O(logn)

2024-02-08 10:33:37 498

原创 #include <deque>

双端队列deque是一个支持在两端高效插入或删除元素的连续线性存储空间。它就像是vector和queue的结合。与vector相比,deque在头部增删元素仅需要O(1)的时间;与queue相比,deque像数组一样支持随机访问。begin/end,返回deque的头/尾迭代器。front/back 队头/队尾元素。push_front 从队头入队。push_back 从队尾入队。pop_front 从队头出队。pop_back 从队尾出队。clear 清空队列。

2024-02-07 18:47:51 397 1

原创 #include <queue>

/结构体rec中必须定义小于号。头文件queue主要包括循环队列queue和优先队列priority_queue两个容器。top 查询堆顶元素(最大值)front 返回队头元素。back 返回队尾元素。push 把元素插入堆。push 从队尾插入。pop 删除堆顶元素。

2024-02-07 15:59:44 648 1

原创 #include <vector>

vector的迭代器是“随机访问迭代器”,可以把vector的迭代器与一个整数相加减,其行为和指针的移动类似。所有的容器都可以视作一个“前闭后开”的结构,end函数返回vector的尾部,即第n个元素再往后的“边界”。例如a是一个非空的vector,则*a.begin()与a[0]的作用相同。back函数返回vector的最后一个元素,等价于*==a.end() 和 a[a.size() – 1]。front函数返回vector的第一个元素,等价于*a.begin() 和 a[0]。

2024-02-07 15:56:13 1363 1

原创 DAY 2

100100 可以表示为带分数的形式:100=3+69258714100=3+69258714还可以表示为:100=82+3546197100=82+3546197注意特征:带分数中,数字 1∼91∼9 分别出现且只出现一次(不包含 00)。类似这样的带分数,100100 有 1111 种表示法。

2024-02-07 10:05:07 453 1

原创 #include<algorithm>

include。

2024-02-04 20:20:56 324 1

原创 DAY 1 递归

从 1∼n 这 n个整数中随机选取任意多个,输出所有可能的选择方案。

2024-02-04 20:13:05 367 1

转载 由数据范围反推算法复杂度以及算法内容

由数据范围反推算法复杂度以及算法内容

2024-02-04 13:33:45 19 1

原创 l + r >> 1; 的含义

【代码】l + r >> 1;的含义。

2024-02-04 12:07:48 553 1

原创 浮点数二分查找

与整数二分的最大区别是,浮点数没有整除(向下取整)这种问题,不需要处理边界问题。所以浮点数二分查找较为简单hhh。

2024-02-03 21:30:25 364 1

原创 整数二分查找

定义的这个性质是:从左往右看,第一个满足大于等于 x 的这个数,性质一定是有边界的,二分的这个数一定能够出来,要找的是大于等于 x 的数,如果找到的这个数大于 x,说明数组是无解的。二分的时候一定是有解,如果无解,是和题目有关的,与二分的模板是没有关系的,题目可能有无解的,但是二分一定是有解的。无解不是指二分无解,而是二分之后通过这个性质可以判断出来原题目无解,二分的时候,一定是可以边界二分出来的。只要是往左找答案,就用第一个模板,mid不+1,r=mid,l+1;在区间内部,解决二分的边界问题时。

2024-02-03 20:48:16 569 1

原创 #include<bits/stdc++.h>是什么

include 是 C 和 C++ 语言中的预处理指令,用于告诉编译器在编译时将某个头文件(header file)的内容包含到当前源代码文件中。它是一个特殊的头文件,包含了大部分标准 C和C++ 库的头文件,可以方便地一次性引入多个库,简化代码编写过程。4、编译器每次编译翻译单元时都必须实际读取和分析每个包含的头文件,应该减少这类头文件的使用。3、这个头文件不是C++标准的一部分,因此是不可移植的,应该避免。3、对于使用的每个函数,不用记住GNU C++的所有STL。

2024-02-02 13:35:06 2442

原创 reverse函数

reverse函数

2024-02-02 13:27:39 458

原创 凯撒密码 s[i] = (s[i] - ‘A‘+ 1) % 26+ ‘A‘;

凯撒密码

2024-02-01 21:01:38 389 1

空空如也

空空如也

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

TA关注的人

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