数据结构与算法题集
文章平均质量分 70
收录了牛客,力扣等网站的算法题,附带有思路以及题解
一枕眠秋雨>o<
阿里云专家博主,CSDN全站领域新星创作者,华为云云享专家,接一下简单的课设或者算法题
展开
-
数据结构界的幻神(First)----链表
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表的结构类似于一条链子,因此得名。原创 2024-02-29 21:00:12 · 1661 阅读 · 32 评论 -
数据结构----完全二叉树的时间复杂度讲解,堆排序
堆排序的基本思想是:将待排序的序列构建成一个最大堆,然后将最大值(即堆的根节点)与序列的最后一个元素交换位置,并将剩余元素重新构建为一个最大堆。堆排序的时间复杂度为 O(n \log n),空间复杂度为 O(1)。2. 空间复杂度低:堆排序的空间复杂度为 O(1),它不需要额外的存储空间来保存排序后的结果,只使用了固定的辅助空间。F(N) = (N+1)(log(N+1)-2)+2(这是详细的时间复杂度函数,粗略记为O(N*logN))F(N) = N-log(N+1)(粗略记为O(N))原创 2024-03-11 09:30:00 · 1850 阅读 · 108 评论 -
驾驭栈和队列,首先逃不开这些(有效括号、栈和队列相互模拟、循环队列)
给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。int size;}Stack;//初始化栈assert(st);//销毁栈assert(st);//栈是否为空assert(st);//出栈assert(st);assert(!st->top--;//入栈assert(st);if (temp!= NULL)原创 2024-03-03 17:19:20 · 1285 阅读 · 126 评论 -
数据结构界的三大幻神----栈
首先强调一下,操作系统中也有栈的概念,但那个栈是用来存放变量,涉及到函数栈帧的销毁,与数据结构中的栈是两个不同的概念。原创 2024-02-29 21:08:16 · 1337 阅读 · 40 评论 -
还在为只会冒泡排序而发愁吗?排序算法万字超基础详解,带你走进不同的排序思维(三种基础排序算法+四种进阶排序算法)
插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,直到整个数组有序。插入排序的基本步骤如下:1. 将待排序的数组分为已排序部分和未排序部分。2. 从未排序部分的第一个元素开始,将其与已排序部分的元素进行比较。3. 如果找到了合适的位置,将该元素插入到已排序部分中,使已排序部分保持有序。4. 重复步骤 2 和 3,直到整个数组都被排序。原创 2024-03-24 10:00:00 · 1733 阅读 · 157 评论 -
数据结构界的终极幻神----树
线索化的步骤:根据某种遍历序列(前、中后序遍历),先确定下来每个节点的前驱和后继。对于每个节点来说,他的左右指针可能没有指向节点(值为NULL),这时候我们可以运用这些“空闲”的指针。比如:左指针如果有空闲,就用这个指针指向这个节点对应遍历序列的前驱,右指针如果有空闲,就用这个指针指向这个节点对应遍历序列的后继。(注意:遍历序列中一头一尾是没有前驱或者后继的,所以如果指针有空闲,我们还是当它指向的是孩子,而不是前驱或者后继)对于每个节点都实现了步骤2后,线索化完成。原创 2024-03-07 17:04:43 · 3527 阅读 · 105 评论 -
数据结构界的三大幻神----队列
队列(Queue)是一种常见的线性数据结构,它遵循先进先出(First-In, First-Out,FIFO)的原则 就像排队等待服务的人一样,先到的人先得到服务。队列的基本操作包括入队(Enqueue)和出队(Dequeue)。入队就是将元素添加到队列的尾部,出队则是从队列的头部取出元素。队列在很多实际场景中都有应用,比如消息队列、任务队列、乘客排队等。它的优势在于能够高效地进行入队和出队操作,而且入队和出队的时间复杂度都是 O(1)。在实现队列时,可以使用数组或链表来存储元素。原创 2024-02-29 21:15:30 · 1335 阅读 · 35 评论 -
数据结构之树(Topk问题, 链式二叉树)
取N个数中最大(小)的前k个值,N远大于k这道题可以用堆的方法来解决,首先取这N个数的前k个值,用它们建堆时间复杂度O(k)之后将剩余的N-k个数据依次与堆顶数据进行比较,如果比堆顶数据大,则将堆顶数据覆盖后向下调整时间复杂度(N-k)*log(N)总共的时间复杂度为O(N*log(N))原创 2024-03-13 13:56:41 · 1740 阅读 · 146 评论 -
2024春晚纸牌魔术原理----环形链表的约瑟夫问题
这道题涉及到数学原理,有一般公式,但我们先不用公式,看看如何用链表模拟出这一过程。原创 2024-02-13 15:00:00 · 776 阅读 · 12 评论 -
Leecode之面试题消失的数字
方法有很多,这里将两种时间复杂度为O(N)的方法。原创 2024-02-12 11:00:00 · 610 阅读 · 0 评论 -
链表的回文结构
众所周知,如果这道题的链表改为数组,这道题将十分简单,用左右指针就行,但人家说的是链表,显然左右指针是行不通的.原创 2024-02-13 11:30:00 · 654 阅读 · 1 评论 -
链表中快慢指针的应用
首先这两道题都用到了快慢指针,而且及其相似,第一道题让慢指针走一步,快指针走两步,快指针走到空时,慢指针指向中间节点。刷了有关链表的一些算法题后,我发现其中用到快慢指针的题不少,像中间节点,倒数第n个节点以及链表成环。第二道题同理,快指针先走k步,然后快慢指针一起走,快指针走向空,慢指针指向倒数第k个节点。链表成环问题我只前发过两篇博客详细的讲了一下。leecode链表的中间节点。下面分别是第一二道题的代码。今天就来说一下另外两道题。牛客链表中倒数第k个节点。原创 2024-02-13 10:45:00 · 376 阅读 · 4 评论 -
Leecode之环形链表进阶
这道题就是找到链表中环的入口。原创 2024-02-10 11:15:00 · 448 阅读 · 1 评论 -
Leecode之反转链表
设定三个指针,n1指向空, n2指向head,n3指向下一个元素,将n2->next指向n1,然后三个指针向后遍历重复即可。原创 2024-02-11 11:30:00 · 481 阅读 · 2 评论 -
Leecode之分割链表
就是将其分成大小两个链表,以x为分界线进行分堆,最后再将两链表合并。原创 2024-02-10 11:30:00 · 422 阅读 · 0 评论 -
Leecode之合并两个有序链表
用指针遍历两个链表并实时比较,较小的元素进行尾差,然后较小元素的指针接着向后遍历。原创 2024-02-11 11:15:00 · 535 阅读 · 0 评论 -
leecode算法题之数组
leecode算法题之数组原创 2023-11-21 18:43:59 · 722 阅读 · 0 评论 -
12.08 PTA练习
【代码】12.08 PTA练习。原创 2023-12-08 21:06:45 · 429 阅读 · 0 评论 -
蓝桥题库(X图形(矩阵))
2.从最外层向中心点靠拢,如果中间遇到不满足条件的情况,则将次数置为0,然后重新开始计数。简单来说就是找到一个由字母组成的X图形,且每个边上的字母都与中心点的字母相同。1.从中心点向外辐射,每找到一个这样的图形,则次数加一。原创 2023-12-25 16:01:04 · 740 阅读 · 0 评论 -
PTA12.09作业
【代码】PTA12.09作业。原创 2023-12-09 16:14:09 · 631 阅读 · 0 评论 -
Leecode之相交链表
这道题无非就是要做两件事,一是判断链表是否相交,而是找到这个交点。原创 2024-02-09 11:30:00 · 387 阅读 · 0 评论 -
Leecode之环形链表
这道题就是去判断一个链表是否带环,分两种情况,链表中只有一个元素则一定不带环,链表中有两个及以上的元素则要引入快慢指针。原创 2024-02-09 11:15:00 · 836 阅读 · 0 评论 -
腾讯面试真题(C语言)
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。原创 2023-11-28 21:32:09 · 4093 阅读 · 3 评论 -
C语言部分期末答案(来自PTA)
【代码】C语言部分期末答案(来自PTA)原创 2023-12-27 13:52:51 · 615 阅读 · 0 评论 -
Leecode之随机链表的复制
这个题目的意思就是拷贝一份复杂链表,难点在于它的random指针所指向的空间与拷贝下来的链表之间缺少一种联系,当然可以用遍历链表的方式通过value去找那块空间,不过时间复杂度太高.原创 2024-02-08 21:52:05 · 387 阅读 · 1 评论