关于怎么使用轮子的问题

来源: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回答

liuyubobobo

2020-09-28

问题和你在群里提的不一样了哈:)


我不确定你的水平是怎样的。对于数据结构的掌握,分两部分,第一部分,是每一个数据结构的底层原理。只有理解了底层原理,才能理解在什么场景选择什么样的数据结构合适。比如都是集合,我们使用数组,使用链表,使用红黑树,使用哈希表,都可以实现集合,具体在什么情况下,是用什么样的集合,是需要掌握底层原理的。


如果你已经了解了这些数据结构的底层原理,如果我给一个大概的思维导图,整体上,最常用的大概有这些:


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


继续加油!:)

2

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2603 学习 · 1086 问题

查看课程