- 博客(14)
- 收藏
- 关注
原创 数据结构线性结构篇——顺序表(SeqList)
顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。顺序表与普通数组最大的区别在于,顺序表是可以动态开辟内存的,而普通数组一旦固定长度,很难修改数组的存储空间。
2023-06-04 00:58:04
1312
原创 递归问题——汉诺塔
谈到递归,绕不开的问题之一就是汉诺塔(还有一个是斐波拉切数列)。我们首先要明确递归三要素——目的、函数关系、结束条件。首先,我们写出一个递归的时候,一定是因为要完成某种任务才写出来的。其次,在递归过程中,我们一定要时刻保证程序运行的状态要符合我们设定的函数关系。最后,递归是必然会结束的,否则就会产生栈溢出(stack overflow)的崩溃情况,导致无法得出正确结论。接下来我们来了解一下汉诺塔问题。汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。
2023-04-30 22:50:20
693
原创 LeetCode(力扣)::19. 删除链表的倒数第 N 个结点
leetcode通过。此题采用的代码难度是非常低的,只有非常基础的遍历和删除操作。但是其中所蕴含的思想是需要认真思考的代码思想。如果我们要求他倒数第n个结点,在遍历之前我们并不知道是不是倒数第n个。那么我们就可以采用快慢指针的思想,将fast和slow的指针距离先拉到n,再同时移动两个指针,这样一来,就可以保证在fast遍历到链表尾的时候,slow所指向的就是n位置结点。(因为fast和slow的距离就是n,fast已经在结尾了,slow自然就在fast之前的倒数第n个位置)
2023-04-26 23:37:09
107
原创 LeetCode(力扣)::206.反转链表
leetcode通过。此题不仅考验我们对于链表next指针的理解,同时也考察了我们对于代码的掌控能力。我们要时刻控制指针的指向位置,防止发生危险访问,并且要保证指针的顺序。严格按照前中后的顺序去移动。
2023-04-25 12:13:05
148
原创 LeetCode(力扣)::203移除链表元素
leetcode通过。我们再来回顾一下该题的一些算法思想和要点。即建立双指针,永远保持一前一后的状态(cur在前,prev在后)。cur指针用来判断当前元素的值是否符合val,prev指针用来在符合题意的情况下,删除cur指针指向的结点(链表的删除一定要知道前一结点的位置!在该题当中,特殊情况就在于判断首结点的值,除题解之外我们也可以采用一种通法来解决,即:创建一个虚拟头指针,将链表内结点全部变为普通结点,从而实现统一操作。
2023-04-25 10:36:18
181
原创 LeetCode(力扣)::27. 移除元素
leetcode通过。此题主要考察的是我们对于双指针的一个进阶用法——快慢指针,通过两个指针性质不同的特点,在一次遍历中完成两个任务——1、遍历数组,筛选符合条件的元素。2、更新数组长度并返回。快慢指针可以有效地提高循环效率,使得单一循环可以具有更多功能。
2023-04-25 00:22:54
63
原创 LeetCode(力扣)::977. 有序数组的平方
leetcode通过。此题运用的思路是一个很简单的双指针对比思想。按原数组元素的大小顺序,依次放入新数组,完成一个新数组的排序。此时该算法的时间复杂度为O(N),因为我们只遍历一次数组,每次进行的操作只有对比操作,可以看作常数阶。
2023-04-24 22:35:21
131
2
原创 学习string库函数的使用技巧
strlen、strcpy、strcmp、strcat函数的解释、使用、自主实现。(字符串求长度、拷贝、比较、链接)
2023-04-13 23:20:44
635
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人