算法与数据结构:堆,栈,队列

1,庖丁解牛  分解知识点

算法与数据结构:堆,栈,队列_第1张图片

算法与数据结构:堆,栈,队列_第2张图片

 

2,刻意练习  : 越不熟悉的地方越需要练习

3,看高手代码

算法与数据结构:堆,栈,队列_第3张图片

 

数组:在内存中是连续不断的一块区域。系统有个内存管理器记录每个数据的下标,直接取就可以  所以时间复杂度是O(1).。

但是因为是连续的一块内存,所以添加,删除的时候时间复杂度是O(n)。n是删除数组后面的数据个数。

链表:单链表,双链表。链表的时间复杂度和数组时相反的。

题目1:反转链表

算法与数据结构:堆,栈,队列_第4张图片

考验代码实现能力。简洁

题目二:反转相邻两个节点

 

算法与数据结构:堆,栈,队列_第5张图片

 

题目三:给定链表,判断是否有环

算法与数据结构:堆,栈,队列_第6张图片

算法与数据结构:堆,栈,队列_第7张图片

 

1,硬做。一直寻找下一个节点则证明存在环。记住要设置个最大运行时间,比如一秒。不然要跑飞。

2,将走过的点记录set中,如果set存在则证明存在闭环

3,快慢指针:一个指针走一步,一个指针走多步。如果两个指针重合了,就说明存在闭环。

 

Stack 堆栈(也可以叫栈,但不能叫堆) ,堆时另一种数据结构。先入后出

queen 队列  先入先出

算法与数据结构:堆,栈,队列_第8张图片

 

题目:String中有大中小括号,判断括号是否合法

算法与数据结构:堆,栈,队列_第9张图片

算法与数据结构:堆,栈,队列_第10张图片

 

另一种比较差的方法:时间复杂度高

算法与数据结构:堆,栈,队列_第11张图片

 

面试题:用队列实现栈&用栈实现队列

算法与数据结构:堆,栈,队列_第12张图片

思想:做到像队列那样先进先出需要用到两个栈。添加数据的时候存在stack1,需要删除的时候需要将栈1中的数据依次取出存进stack2中。删除的时候从stack2中删除。

再次添加的时候添加到stack1,删除从stack2中删除。但stack2中元素全部删除的时候,再把stack1中数据依次存到stack2中。

反复执行以上步骤

 

PriorityQuenu 优先队列 :正常入,按照优先级出

算法与数据结构:堆,栈,队列_第13张图片

 

算法与数据结构:堆,栈,队列_第14张图片

算法与数据结构:堆,栈,队列_第15张图片

 

 

堆的种类及相关信息

算法与数据结构:堆,栈,队列_第16张图片

11.面试题:返回数据流中的第K大元素

数据流是实时变的

 

 

算法与数据结构:堆,栈,队列_第17张图片

算法与数据结构:堆,栈,队列_第18张图片

方法一:保存K个最大值,每次加入值的时候和以上保存的K个值比较

方法二:小顶堆:每次取堆顶的元素比较,比他还大的话替换并重新排列小顶heap。时间复杂度小很多

 

12.面试题:返回滑动窗口中的最大值

算法与数据结构:堆,栈,队列_第19张图片

算法与数据结构:堆,栈,队列_第20张图片

算法与数据结构:堆,栈,队列_第21张图片

双端队列的时间复杂度是O(1)。

 

你可能感兴趣的:(数据结构与算法)