LeetCode相关问题
来源:3-4 更多栈和队列的问题推荐
蛋包饭吃球球
2021-07-14 10:10:43
问题描述:
bobo老师您好,我没怎么在LeetCode上刷过题,看到题目给出一个框架,总是感到束手无策。例如题目要求实现循环队列或最小栈等,课程中讲的循环队列等都是用自己写的Array类对象来实现的。但我看答案都是用java自带的Deque,Linklist等,这该如何选择呢?谢谢老师!我往往一上来就卡住了。还有,如果Stack类尽量不用,那是要用例如Deque这个接口,实现其中方法,使其变成同栈一样的数据结构吗?
1回答
我不确定你现在的年龄或者在计算机专业的程度,但是整体来说,这个课程介绍的重点,和刷题是不同的。这个课程介绍的是基础算法和数据结构的底层实现,而刷题主要考察的是这些基础算法和数据结构的应用,以及算法设计。这二者之间是有差别的。
在这个课程的第一章,我记得我强调过,这不是一个刷题课。对于这个体系课程,我做过一次直播,也再次强调了这一点,有兴趣可以回顾一下。(P.S. 在直播中,我也简单讲了讲如何刷题的问题。)
整体,这个课程的内容,是刷题的基础,更是整个计算机专业的基础。但学完这个课程,不意味着刷题没有问题了。实际上,刷题的问题恰恰在于,很多时候,我们会使用语言标准库中的各种数据结构,却不了解其中的具体实现。这个课程的重点是讲解这些具体的原理。这个课程的数据结构部分,近乎可以看做是 Java 语言 Collections 类的源码讲解(虽然和具体源码还是有距离。)
说实话,很多时候,刷题的意义没有那么大,就是为为了应付面试,但是,这个课程的内容,是非常重要的。可能你会觉得这个课程的内容并不是面试里会直接出的问题,但是这个课程的内容是真正的基础,我坚信对每一个走计算机专业职业道路的同学,都是非常有意义的。
==========
在实际刷题中,通常我们不需要从底层实现这些数据结构,直接使用语言标准库中提供的就好。
对于你说的 Deque 的问题,我们不需要实现任何方法了。只要
Deque<Integer> stack = new ArrayDeque<>();
现在,我们就可以直接调用 stack 的 addFirst 当做 push;removeFirst 当做 pop;peekFirst 当做 top。
继续加油!:)
相似问题