用数组模拟链表的好处是方便,代码量少,而且不需要用到指针,减少因为指针出现的错误。
在静态链表中,我们使用head表示头节点的下标,初状态下head=-1,说明表空。
将元素加入到头节点之后,head更新为这个元素的下标,表示这个元素就是这个表的新头节点。
具体可以看看代码,比较简单。
用数组模拟链表的好处是方便,代码量少,而且不需要用到指针,减少因为指针出现的错误。
在静态链表中,我们使用head表示头节点的下标,初状态下head=-1,说明表空。
将元素加入到头节点之后,head更新为这个元素的下标,表示这个元素就是这个表的新头节点。
具体可以看看代码,比较简单。
单调栈是指栈内的元素单调递增或者递减,主要是以$O(n)$的时间解决NGE问题(Next Greater Element)。就是在每个元素中,找到下一个比他大的1数。(或者其他的变式)。
可以类似于身高,2只能看到4是第一高的,1只能看到2是第一高的…同理。
单调队列稍有不同,需要用到双端队列模拟。不然的话无法正常满足单调性。
并且双端队列最好自己手写,用c++的dequeue效率非常慢,很容易tle的。
单调队列常用于解决连续k个数中的操作,比如滑动窗口问题。
Update your browser to view this website correctly.&npsb;Update my browser now