
【408】c/cpp+数据结构+计算机网络+操作系统+计组
文章平均质量分 88
你不得不懂的考研408!
染落林间色
计算机系在读本科生。全网同名。
水平不高,欢迎大佬指正,一起交流学习。
长期在线,私信会回。
展开
-
【C语言】一文带你读懂C语言预处理器、宏、预处理指令
define:用于定义常量、宏、函数宏等,将一段代码片段用一个标识符代替。#include:用于包含头文件,将其他文件的内容插入到当前文件中,实现代码的模块化和复用。:条件编译指令,根据条件的真假选择性地编译代码,用于根据不同的编译环境或预定义宏来切换代码执行路径。#undef:用于取消宏定义,可以取消之前使用 #define 定义的宏。#pragma:用于设置编译器的一些特定属性,或者调用特定的功能函数。不同编译器的 #pragma 指令功能可能不同。#error。原创 2023-12-27 11:25:19 · 1295 阅读 · 0 评论 -
算法与数据结构之数组轮转问题详解|力扣leetcode189(cpp、Java实现)超级详细!!!
使用额外的数组:将原数组的元素根据旋转规则依次放入新数组的对应位置。然后将新数组复制回原数组即可。时间复杂度为O(n),空间复杂度为O(n)。环状替换:通过从某个位置开始进行元素的交换,每次移动到下一个位置,直到回到起始位置。时间复杂度为O(n),空间复杂度为O(1)。数组翻转:先将整个数组翻转,然后再将前k个元素翻转,再将剩余的n-k个元素翻转。时间复杂度为O(n),空间复杂度为O(1)。原创 2023-08-07 21:58:04 · 352 阅读 · 1 评论 -
数据结构与算法|数组之元素奇偶移动专题|力扣leetcode905按奇偶排序数组(cpp、Java实现)
这类题目多使用双指针法,首先将左右指针分别指向数组的两端,然后依据题目要求进行元素交换。或者可以另辟蹊径,另外开辟一个数组空间,不过这种方法牺牲了空间。1.移动偶数到数组前面,奇数到数组后面在这种情况下,可以以0为基准,左指针从头到尾扫描原始数组,当遇到一个偶数时,将其与基准(第一个元素)交换。在扫描结束后,所有的偶数都被移动到了基准的左侧。接下来,再以最后一个元素为基准,右指针从尾到头扫描原始数组,当遇到一个奇数时,将其与基准(最后一个元素)交换。在扫描结束后,所有的奇数都被移动到了基准的右侧。原创 2023-08-06 22:32:41 · 501 阅读 · 0 评论 -
删除数组的经典案例题——leetcode26删除有序数组中的重复项
unique函数可以就地去重,返回去重后的数组的尾指针,需要注意的是,原始数组尾部残留的元素也是有的,可以使用erase函数将其删除。用一个指针i维护不重复元素的末尾,另一个指针j扫描整个数组,将不相等的元素放到数组的左边,等到j指针扫描完毕后,i指针位置即为新数组的长度。unique函数的返回值指向第一个被删除的元素,而erase函数可以删除指定位置的元素,因此可以得到如下代码。使用STL库的unique函数,可以简化代码,但是需要调用erase函数删除多余的元素,时间复杂度为O(n)。原创 2023-08-05 21:15:58 · 765 阅读 · 1 评论 -
删除数组元素的经典案例题——leetcode27 移除数组 (五种方法详解,cpp,Java实现)
给你一个数组 nums和一个值 val,你需要原地移除所有数值等于 val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。原创 2023-08-04 23:04:15 · 756 阅读 · 1 评论 -
【数据结构与算法】一文写明数组的增删改查(c,cpp,java)
增删改查,是一种数据结构中的基本操作,即增加(Add)、删除(Delete)、修改(Modify)和查询(Search)数组中的元素。数组是一种非常重要的数据结构,常常被用来存储一系列相同类型的元素,无论是编程还是算法都离不开它的存在。首先,我们来说说增加吧!在数组中增加元素分为头部、中间和尾部。在这三个部位的插入代码并不相同,而且还要处理游标和边界等情况。在末尾添加一个新元素,这个操作很简单,只需要将新元素放入数组的最后一个位置即可。但是在中间和开头添加新元素,就得把数组后面的元素整体右移。原创 2023-08-03 22:21:24 · 1398 阅读 · 1 评论 -
算法与数据结构|数组力扣刷题|不简单的数组(leetcode35、88、896)
理解数组的基本概念:数组是一组存储相同类型数据的集合,可以通过下标快速访问元素。熟悉数组的常见操作:如创建数组、插入、删除、查找元素等。掌握数组常用的算法:如冒泡排序、快速排序等,可以提高对数组操作的熟练度和效率。多实践,多思考:做题时要不断练习,多思考如何使用数组解决问题。学会运用其他数据结构:有些问题不适合使用数组来解决,这时需要运用到其他数据结构,如链表、栈、队列等。原创 2023-08-02 23:51:45 · 422 阅读 · 0 评论 -
数据结构与算法|链表基础之力扣leetcode21合并两个有序链表(cpp、Java实现)
对于将两个升序链表合并的问题,以下是三种常见的解决方法:方法一:迭代法初始化一个新的链表,并设立一个指针指向新链表的头部。比较两个链表当前节点的值,将较小的节点添加到新链表中,并将指针移到下一个位置。重复步骤2,直到其中一个链表遍历完。将剩下的链表连接到新链表的后面。返回新链表的头部。方法二:递归法判断两个链表是否有一个为空,如果有,则返回另一个链表。比较两个链表当前节点的值,将较小的节点作为新链表的头节点。原创 2023-07-31 22:39:29 · 335 阅读 · 0 评论 -
指定区间的链表反转问题|力扣leetcode92反转链表2(cpp、Java实现)
反转指定区间链表可以使用以下四种方法:头插法是一种利用辅助节点将每个节点插入到链表头部的方法。具体来说,我们先创建一个辅助节点,然后依次遍历链表中的每个节点,将其插入到辅助节点的后面,随后将辅助节点指向该节点。最后,我们将辅助节点后面的节点全部取出来,即为反转后的链表。该方法的时间复杂度为O(n),空间复杂度为O(1)。这种方法思路简单,代码实现也直接。以链表的指针作为遍历的方式,依次反转指定区间内的节点。每遍历到一个节点就将其反转,直到遍历完指定区间内的所有节点。原创 2023-07-29 19:54:59 · 2467 阅读 · 2 评论 -
终于学会反转链表了|leetcode206、nc78(Java、cpp实现)
前期提要:链表反转是高频考点,在各大高频题排名网站长期占领前三,在牛客网稳居第一。链表反转之所以很重要,是因为它在实际编程中应用广泛,可以解决很多与链表相关的问题。一些算法和数据结构需要借助链表来实现,比如LRU缓存淘汰算法、数据结构栈和队列等等。而链表的反转是其中一个最基本的操作,通过反转可以使得链表的遍历顺序与原来相反,这样就可以更方便实现一些算法和问题的解决。同时,链表反转也是一道经典的面试题,掌握链表反转的方法可以帮助程序员在面试中获得更好的表现。🙂题目来源:牛客nc78;原创 2023-07-27 16:54:41 · 1062 阅读 · 1 评论 -
链表经典问题之回文链表(c++、Java)力扣leetcode234
方案一:栈遍历链表,将链表的每个节点的值存入一个栈中;再次遍历链表,比较链表节点的值和出栈的值是否相等,若有不等的则不是回文链表,否则是回文链表。方案二:快慢指针 + 反转链表使用快慢指针找到链表的中点,将链表分成两个部分;反转链表的后半部分;比较链表的前半部分和反转后的后半部分是否相等,若有不相等的则不是回文链表,否则是回文链表。方案三:递归使用快慢指针找到链表的中点,将链表分成两个部分;递归到链表的尾部,依次向前比较节点的值是否相等,若有不相等的则不是回文链表,否则是回文链表。原创 2023-07-24 12:23:42 · 1282 阅读 · 0 评论 -
链表经典问题之链表公共节点问题(c++、Java、python)剑指offer52、力扣160相交链表
先分别遍历两个链表,得到它们的长度和尾节点。如果两个链表相交,那么它们的尾节点一定相同。如果它们不相交,那么它们的尾节点不相同。如果两个链表相交,那么它们的公共部分一定在末尾,因此我们可以将较长的链表先遍历一定的长度,使得两个链表剩余长度相等。这之后,我们同时遍历两个链表,直到找到第一个相同节点,即为它们的相交起始节点。如果没有找到相交节点,返回 null。具体实现时,我们可以采取双指针法。如果两个指针都不为空,则继续往后遍历。如果其中一个指针为空,则将其指向另一个链表的头结点。原创 2023-07-23 14:41:12 · 461 阅读 · 0 评论 -
算法村第一关黄铜|链表|单链表与双向链表(c语言&c++实现)
1.理解C 语言里是如何构造出链表的2.链表增加元素,首部、中间和尾部分别会有什么问题,该如何处理?3.链表删除元素,首部、中间和尾部分别会有什么问题,该如何处理?4.双向链表是如何构造的,如何实现元素的插入和删除。原创 2023-07-18 23:57:18 · 2087 阅读 · 1 评论 -
数据结构|连通图、完全图、无向图、有向图的边数计算问题
一个n个顶点的强连通图,其边数至少为n;一个n个顶点的无向图,其边数至少为n-1;一个n个顶点的无向完全图,其边数至少为n(n-1)/2;一个n个顶点的有向完全图,其边数至少为n(n-1)/2;对于n个顶点的无向图G,若G是连通图,则最少有n-1条边;若G是非连通图,则最多有(n-1)(n-2)/2条边一个n个顶点的无向图,保证其在任何情况下连通,其边数至少为n(n-1)/2+1;一个n个顶点的有向图,保证其在任何情况下连通,其边数至少为n(n-1)+1。原创 2022-12-18 23:02:20 · 11553 阅读 · 6 评论