LeeCode刷题记录02

本文探讨了数组作为线性表的一种实现方式,其特点是数据元素在连续的内存空间中存储,便于快速访问。而链表虽然没有固定的内存位置,但通过指针实现节点间的连接,插入和删除操作更为高效。根据不同的操作需求,链表在需要频繁增删节点时更具优势。总结了数组与链表各自的特点和适用场景。
摘要由CSDN通过智能技术生成

数组的特征

第一个方面是 「线性表」。
线性表就是所有数据元素排成像一条线一样的结构,线性表上的数据元素都是相同类型,且每个数据元素最多只有前、后两个方向。数组就是一种线性表结构,此外,栈、队列、链表都是线性表结构。

第二个方面是 「连续的内存空间」。
线性表有两种存储结构:「顺序存储结构」和「链式存储结构」。其中,「顺序存储结构」是指占用的内存空间是连续的,相邻数据元素之间,物理内存上的存储位置也相邻。数组也是采用了顺序存储结构,并且存储的数据都是相同类型的。

综合这两个角度,数组就可以看做是:使用了「顺序存储结构」的「线性表」的一种实现方式。

与之对应的是链表的特征

1、链表可以没有表示整体的对象,只需要用节点就够了。表示一整条链表可以用“头节点”,也就是第一个节点来表示整条链。
2、总是可以用一个节点的next指针走到下一个节点。而且大部分情况下只有这一种方法——链表没有下标,也不能直接跳转到某一环。只能从一个节点出发,一步一步往后挪。
3、链表的删除操作很快,与链表长度无关。想象一下:你拿着一条项链的一个环,如何拆掉这个环?只需要拆开与它相邻的两个环,然后把相邻的两环接到一起即可。无论项链长短,拆除的操作没有区别。
4、链表的插入也很快,与链表长度无关。
5、链表的查找需要从头遍历,与数组类似,越长速度越慢。但由于没有下标可用,链表的遍历实际上比数组更慢一些。而且在插入、删除节点时,要先获取到必要的指针,才能删除或添加。
所以,理论上,在需要经常插入节点、删除节点,而且数据量比较大的场合,非常适合使用链表。

对于LeetCode刷题,我可以提供一些指导和建议。LeetCode是一个非常受欢迎的在线编程平台,提供了大量的编程题目,涵盖各种算法和数据结构的知识点。 要有效地刷LeetCode题目,以下是一些建议: 1. 熟悉常见的数据结构和算法:在开始刷题之前,你需要对常见的数据结构(如数组、链表、栈、队列、树等)和算法(如排序、查找、递归、动态规划等)有一定的了解。 2. 刷题顺序:可以按照题目的难度或者类型进行刷题。刚开始可以选择一些简单的题目,逐渐提升到中等和困难难度的题目。另外,可以按照题目类型进行分类刷题,比如数组、链表、树等。 3. 题目分析:在开始解题之前,仔细阅读题目,并理解问题的要求。可以考虑一些边界情况和特殊情况。 4. 设计合适的解决方案:根据题目要求,设计出符合要求的解决方案。可以先在纸上画图或者写伪代码,再实现代码。 5. 编写高质量的代码:编写代码时,注意代码的可读性、可维护性和效率。可以考虑使用适当的数据结构和算法来优化代码。 6. 调试和测试:编写完代码后,进行调试和测试,确保代码能够正确地解决问题。 7. 多解法比较:对于一道题目,可以尝试不同的解法,比较它们的优劣,并分析其时间复杂度和空间复杂度。 8. 学习他人的解法:在刷题过程中,可以参考他人的解题思路和代码,并学习其中的优秀之处。 9. 刷题计划:可以制定一个刷题计划,每天或每周刷一定数量的题目,并坚持下去。 10. 总结和复习:在刷题过程中,及时总结自己的思考和解题过程,对于一些常见的算法和技巧进行复习和加深理解。 希望以上的建议对你有所帮助。祝你在LeetCode刷题中取得好成绩!如果你有其他问题,也欢迎继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值