关于怎么使用轮子的问题
来源:1-1 为什么要学习数据结构
purecce
2020-09-28 11:15:02
老师我遇到的问题是:可以用python刷leetcode,但是由于java基础不牢,对jdk自带数据结构(比如队列,栈,树等)的不熟悉,使我没法使使用java来刷题。
经过部分课程的学习,我现在已经可以会使用Stack和ArrayList了,但是对其他高级点的数据结构还是没掌握。请问老师,我怎么快速掌握这些JDK内置的数据结构呢?这样子我的刷题才能够开始,python的确实简化太多了。你的课程前面都是带我们自己去实现的,我的需求可能就是会用系统自带的就好了。能麻烦老师整理个思维导图相关的东西么,自己去找真的有点难度。
另外我想吐槽一下为什么JDK内置的数据结构这么混乱?Array和List不都是数组么,出来了一个ArrayList。然后双端队列和链表又都是通过LinkerList实现的,脑袋就很迷糊。
呜呜呜我就想快速掌握这些工具,然后每天三道题的节奏把我的LeetcodeT恤拿到
1回答
问题和你在群里提的不一样了哈:)
我不确定你的水平是怎样的。对于数据结构的掌握,分两部分,第一部分,是每一个数据结构的底层原理。只有理解了底层原理,才能理解在什么场景选择什么样的数据结构合适。比如都是集合,我们使用数组,使用链表,使用红黑树,使用哈希表,都可以实现集合,具体在什么情况下,是用什么样的集合,是需要掌握底层原理的。
如果你已经了解了这些数据结构的底层原理,如果我给一个大概的思维导图,整体上,最常用的大概有这些:
1)动态数组:ArrayList
2)链表:LinkedList
3)栈:Stack
4)队列:Queue
5)双端队列:Deque
6)优先队列:PriorityQueue
7)基于树的集合和映射:TreeSet;TreeMap
8)基于哈希表的集合和映射:HashSet;HashMap
实际上,这些类所对应的数据结构的底层原理,在这个课程中都有涉猎:)当然,如果你有基础,我觉得你查一查这些类的相应 API 就能用了。
如果你的目标是刷题,可能这个课程并不适合你。课程的第一章就强调了,这不是一个刷题课。关于这一点,也可以看我的这篇公众号文章:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247486023&idx=2&sn=59944e38c23b2a066deade934f62dfb0&chksm=fd8ca501cafb2c17bcb46a7ccedb1b8699c75c8b93a7cea510cb84073a6f734b34c8254ee5af&token=1282876944&lang=zh_CN#rd
继续加油!:)
相似问题