- 博客(20)
- 收藏
- 关注
原创 linux基础(2)
vim\vi是linux中最经典的文本编译器同图形化界面中的文本编译器是一样的,vi是命令行下对文本文件进行编辑大的绝佳选择。
2023-09-17 13:07:37
633
2
原创 【linux基础(1)】
1.命令行:即linux终端,是一种命令提示符页面,以纯字符的形式操作系统,可以使用各种字符化命令对系统做出操作指令。2.命令:一个命令就是一个linux的程序,命令没有图形页面化,可以在命令行提供字符化的反馈。3.命令输入的格式命令+选项+参数(对象)命令本体:即命令本身可选选项:控制命令的行为细节可选参数:控制命令的指向目标我们可以通过cd命令来改变当前所在的工作目录cd命令的全称为change directory语法为:cd [ linux路径 ]
2023-09-08 11:49:23
400
5
原创 【算法刷题-栈与队列篇】
所以大家经常说的大顶堆(堆头是最大元素),小顶堆(堆头是最小元素),如果懒得自己实现的话,就直接用priority_queue(优先级队列)就可以了,底层实现都是一样的,从小到大排就是小顶堆,从大到小排就是大顶堆。为了满足栈的特性,即最后入栈的元素最先出栈,在使用队列实现栈时,应满足队列前端的元素是最后入栈的元素。用两个队列que1和que2实现队列的功能,que2其实完全就是一个备份的作用,把que1最后面的元素以外的元素都备份到que2,然后弹出最后面的元素,再把其他元素从que2导回que1。
2023-09-03 13:19:14
628
5
原创 【算法刷题-双指针篇】
如果赋值过来的元素恰好也等于 val,可以继续把右指针 right 指向的元素的值赋值过来(左指针 left指向的等于 val的元素的位置继续被覆盖),直到左指针指向的元素的值不等于 val 为止。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。接下来如何移动left 和right呢, 如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组是排序后了,所以right下标就应该向左移动,这样才能让三数之和小一些。
2023-08-30 16:20:21
494
9
原创 【算法刷题之字符串篇】
如果二者相等,表示在拼接后的字符串中,只有一个出现位置,即没有重复的子字符串。如果不相等,表示在拼接后的字符串中存在多个子字符串的出现位置,即存在重复的子字符串。*如果字符a是空格字符,并且 word 字符串非空,说明一个完整单词结束了,将 word 字符串压入栈 s1 中,并重置 word 为空字符串。3.当找到一个可能的重复子字符串长度i后,判断原字符串是否可以被i整除(即n%i==0),如果可以整除,则继续判断是否存在重复子字符串的情况。1.将原字符串s与自身进行拼接,得到一个新的字符串。
2023-08-28 15:09:43
572
9
原创 【KMP算法-代码随想录】
说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP。KMP(Knuth-Morris-Pratt)算法是一种字符串匹配算法,用于在一个主文本字符串中查找一个模式字符串的出现位置。它的核心思想是避免在匹配过程中反复回溯主文本中的位置,从而提高匹配效率。
2023-08-27 09:53:20
1295
10
原创 【算法刷题之哈希表(2)】
数组作为哈希表在242.有效的字母异位词 (opens new window)中,我们提到了数组就是简单的哈希表,但是数组的大小是受限的!这道题目包含小写字母,那么使用数组来做哈希最合适不过。在383.赎金信 (opens new window)中同样要求只有小写字母,那么就给我们浓浓的暗示,用数组!
2023-08-25 14:26:06
1070
9
原创 【算法刷题之哈希表篇(1)】
由于字符串只包含 26个小写字母,因此我们可以维护一个长度为 26 的频次数组 table,先遍历记录字符串 s 中字符出现的频次,然后遍历字符串 t,减去 table中对应的频次,如果出现 table[i]<0,则说明 t 包含一个不在 s 中的额外字符,返回 false 即可。在遍历数组的时候,只需要向map去查询是否有和目前遍历元素匹配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。输出结果中的每个元素一定是 唯一 的。
2023-08-24 13:12:17
516
9
原创 【C++/C 实现球球大作战】
1.操作方式:使用键盘控制球体的移动,如W、A、S、D 或者 上、下、左、右方向键。2.玩法:玩家控制的球体通过键盘控制进行移动,可以朝不同的方向移动以吞噬其他球体。球体可以通过碰撞来吞噬其他较小的球体,从而增大自己的体积。
2023-08-23 14:23:11
4463
12
原创 【算法刷题之数组篇(2)】
请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。如果我们按照区间的左端点排序,那么在排完序的列表中,可以合并的区间一定是连续的。加1,表示上边界收缩。3.如果当前区间的左端点在数组 merged 中最后一个区间的右端点之后,那么它们不会重合,我们可以直接将这个区间加入数组 merged 的末尾;4.否则,它们重合,我们需要用当前区间的右端点更新数组 merged 中最后一个区间的右端点,将其置为二者的较大值。在循环中,首先从左到右输出上边界的元素,每输出一个元素,
2023-08-21 16:50:40
1072
6
原创 【算法刷题之数组篇(1)】
nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]。2.例如 nums=[3,1,2,3,3,3,3],target=2,首次二分时无法判断区间 [0,3][0,3][0,3] 和区间 [4,6][4,6][4,6] 哪个是有序的。1.对于数组中有重复元素的情况,二分查找时可能会有 a[l]=a[mid]=a[r],此时无法判断区间 [l,mid] 和区间 [mid+1,r] 哪个是有序的。
2023-08-20 22:22:16
866
10
原创 【算法刷题之链表篇(2)】
由于输入的两个链表都是有序的,所以不管哪个链表是非空的,它包含的所有元素都比前面已经合并链表中的所有元素都要大。当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。1.如果链表中至少有两个节点,则在两两交换链表中的节点之后,原始链表的头节点变成新的链表的第二个节点,原始链表的第二个节点变成新的链表的头节点。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。
2023-08-19 14:30:29
973
11
原创 【算法刷题之链表篇(1)】
根据栈「先进后出」的原则,我们弹出栈的第 n 个节点就是需要删除的节点,并且目前栈顶的节点就是待删除节点的前驱节点。给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。2.当first走完,在定义一个second指针,此时两指针一起走,当first走到尾部时,second就走到了要删掉的节点的前一位。给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字。返回 已排序的链表。
2023-08-18 16:40:30
909
18
原创 【C++ STL之string,tuple,array详解】
在C++的STL(Standard Template Library)中,std::string是一个非常有用的字符串类。它提供了一系列操作字符串的功能,包括字符串的创建、修改、查找、拼接等。本文将详细介绍C++ STL中std::string的使用方法和一些常见操作。在C++的STL(Standard Template Library)中,std::tuple是一个非常有用的模板类。它提供了一种将多个值组合在一起的方式,类似于一个元组。
2023-08-17 15:56:21
1271
14
原创 【C++ STL之map,set,pair详解】
在C++的STL(Standard Template Library)中,map是一个非常有用的关联容器。它提供了一种键-值对的数据结构,其中的元素按照键的顺序进行排序,并且每个键是唯一的。本文将详细介绍C++ STL中map的使用方法和一些常见操作。在C++的STL(Standard Template Library)中,set是一个非常有用的关联容器。它提供了一种有序集合的数据结构,其中的元素按照键的顺序进行排序,并且每个键是唯一的。本文将详细介绍C++ STL中set的使用方法和一些常见操作。
2023-08-16 12:49:39
1418
6
原创 【C++ STL之队列和栈详解】
在C++的STL(Standard Template Library)中,stack(栈)是一个非常有用的容器适配器。它提供了一种后进先出(LIFO)的数据结构,类似于现实生活中的堆栈。本文将详细介绍C++ STL中stack的使用方法和一些常见操作。在C++的STL(Standard Template Library)中,queue(队列)是一个常用的容器适配器。它提供了一种先进先出(FIFO)的数据结构,类似于现实生活中的排队。本文将详细介绍C++ STL中queue的使用方法和一些常见操作。
2023-08-15 10:35:27
3123
6
原创 【C++ STL之vector超详解】
vector为可变长数组(动态数组),用于实现动态数组,它提供了动态大小的数组功能,并提供了一些方便的操作和函数来管理数组中的元素。
2023-08-14 21:52:41
1105
3
原创 【C++指针超详解】
因为在这段代码中,虽然函数 fun 中修改了指针 p 的值,使其指向了一个局部变量 b 的地址,但在函数 fun 结束后,b 的生命周期也结束了,它所占用的内存会被释放。而在添加删除结点的过程中,我们并没有改变函数参数指针的指向,而是通过传入的指针如Node *head,找到要删除结点的位置,并未对该指针做改变,因此退出函数后,该指针无影响。数组有若干个元素组成,每个元素都有相应的地址,通过取地址运算符&可以得到每个元素的地址,数组的地址就是这一整块存储空间中,第一个元素的地址即a[0]
2023-08-13 14:02:25
1135
9
原创 【C++扫雷小游戏】
尝试挑战经典的扫雷游戏,用C++实现自己的版本扫雷,这个经典的休闲益智游戏,曾陪伴许多人度过无数时光。玩家需要根据已翻开的方块上的数字,推断出隐藏在方格中的地雷位置,然后用标记或者揭开其他方块的方式逐渐清理出安全的区域。通过逻辑推理与快速反应,玩家能够体验到紧张刺激以及智慧的成就感。
2023-08-12 13:45:58
1616
7
原创 c++【数据结构】 八大排序
在计算机科学中,排序算法是最重要的算法之一。排序算法可以将一组无序的数据按照一定的规则重新排列,使其变为有序的数据集合。排序算法的应用十分广泛,它们在计算机科学、数据结构、数据库、人工智能、机器学习等领域都扮演着重要的角色。本文将介绍C++/C语言中的八大排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序。这些排序算法各有优缺点,选择合适的算法可以优化程序效率,提升算法的性能。
2023-08-10 23:58:39
1340
9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人