- 博客(26)
- 收藏
- 关注
原创 栈和队列高频面试题
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。要求空间复杂度为:O(n)思路:栈的后进先出的规则(后入栈的前括号将优先与先出现的后括号相匹配)
2024-06-09 11:20:37
688
原创 数据结构:堆的两种算法、堆的基本功能实现
如果有一个关键码的集合K={k0,k1,k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足ki=k2i+2),其中i=0,1,2,…,则称该集合为堆。:将根结点最小的堆叫做小堆,也叫最小堆或小根堆。:将根结点最大的堆叫做大堆,也叫最大堆或大根堆。
2024-05-28 17:12:08
864
原创 链表(1)移除链表元素
当排查到最后一个结点时,cur指向最后一个结点,next指针指向该节点指向的位置,即NULL。我们用上面常规情况的方法对其进行分析,发现常规情况的思路适用于这种特殊情况。并且发现遍历的终止条件,就是当cur为NULL的时候遍历停止。
2024-05-27 16:05:41
711
原创 数据结构:带头双向循环链表
前面说到,链表的结构一共有8中:带头单向循环、带头单向非循环、带头双向循环、带头双向非循环、无头单向循环、无头单向非循环、无头双向循环、无头双向非循环。在这8中结构中,我们只挑两种来剖析:即无头单向非循环和带头双向循环。:结构简单,一般不会用来存储数据。实际上是作为其他数据结构的子结构,入哈希桶、图的链接表等等。此外,这种结构在笔试面试中出现很多。:结构最复杂,一般用在单独存储数据。实际使用的链表数据都是带头双向循环链表。
2024-05-23 19:08:35
814
1
原创 数据结构:队列
队列:只允许在一段进行插入数据操作,在另一端进行删除数据操作的特殊线性表。具有先进先出的特点。a.入队列:进行插入操作的一端称为队尾。b.出队列:进行删除操作的一端成为队头。队列可以由数组和链表的结构实现。,因为如果使用数组的结构,出队列,效率会比较低。
2024-05-14 15:41:37
160
1
原创 VS的调试技巧
调试:找问题的过程。首先承认出现了问题,可能是逐过程的调试,也可能是隔离和屏蔽代码的方式。找到问题的位置,然后确定产生的原因,再修复代码,重新测试。
2024-05-14 10:25:46
973
1
原创 数据结构:栈
栈 :一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO ( Last In First Out ) 的原则。入栈:栈的插入操作叫做进栈 / 压栈 / 入栈, 入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。
2024-05-07 14:39:28
314
原创 C语言:打印菱形
:2*(line-1-i)-1的方式减少。空格:从上往下,一行减少一个。空格:从上往下,一行增加一个。上三角:先输出空格,后输出**:2*i+1的方式递增。下三角:先输出空格,后输出*
2024-05-04 13:16:40
57
原创 C语言:动态内存管理
我们知道的开辟内存的方式a.开辟的内存大小是固定的b.数组在申明的时候,必须指定数组的长度。c.但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道,那数组的编译时开辟空间的方式就不能满⾜了。
2024-05-01 16:24:08
838
原创 数据结构:顺序表
1.静态顺序表---->所占内存空间固定---->空间给少了不够用,给多了浪费2.动态顺序表---->可以动态扩容3.顺序表本质上就是数组(加了增删查改等操作),数组就是最简单的数据结构, 顺序表是线性表的一种。4.线性表物理结构不一定连续,逻辑结构一定连续顺序表物理结构一定连续, 逻辑结构也一定连续。
2024-05-01 13:09:06
104
原创 C语言:指针数组
1.parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数组中的元素。2.值得注意的是:此二维数组并非彼二维数组因为每一行在内存中并非连续的。整型数组,是存放整型的数组 那么指针数组就是存放指针的数组。
2024-04-29 17:07:21
180
原创 数据结构:时间复杂度
即为F(N)=N^2。双指针法:时间复杂度为O(N),因为每次移动指针的操作都是O(1)的,而在最坏情况下,我们可能需要遍历整个数组,所以时间复杂度为O(N)5.给定一个整数sum,从有N个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum,最快的平均时间复杂度是( )3.设某算法的递推公式是T(n)=T(n-1)+n,T(0)=1,则求该算法中第n项的时间复杂度为()c.若最高阶项存在且不为O(1),则去除常数,保留1 eg.F(N)=N^2+2N+1。你有办法在O(N)时间内完成吗?
2024-04-29 11:35:36
458
1
原创 努力学编程
来自中北大学23级的新生,专业是软件工程,希望经过长时间的学习后能够成为一名优秀的程序员。每天都要抽出一定的时间进行编程的学习。及时预习复习,做好笔记。精进自己的技术和知识。4.最想进入的IT公司:小米科技。得到一个满意的年薪。
2024-01-17 17:31:30
392
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人