牛客网《BAT面试算法精品课》视频链接:《BAT面试算法精品课》 笔记链接: 牛客网《BAT面试算法精品课》笔记一:排序 牛客网《BAT面试算法精品课》笔记二:字符串 牛客网《BAT面试算法精品课》笔记三:队列和栈 牛客网《BAT面试算法精品课》笔记四:链表 牛客网《BAT面试算法精品课》笔记五:二分搜索 牛客网《BAT面试算法精品课》笔记六:二叉树 牛客网《BAT面试算法精品课》笔记七:位运算 牛客网《BAT面试算法精品课》笔记八:排列组合 牛客网《BAT面试算法精品课》笔记九:概率 牛客网《BAT面试算法精品课》笔记十:大数据 牛客网《BAT面试算法精品课》笔记十一:动态规划 队列和栈的基本性质 1.栈是先进后出的 2.队列是先进先出的 3.栈和队列在实现结构上可以有数组和链表两种形式 01.数组结构实现比较容易 02.用链表结构比较复杂,因为牵扯很多指针操作 栈结构基本操作 1.pop操作,栈顶弹出1个元素 2.top或peek操作,访问栈顶元素但不弹出 3.push操作,栈顶压入一个元素 4.size操作,返回栈中元素个数 队列的基本操作: 与栈操作不同的是,push操作为在队头加入元素,而pop操作是从队列尾部弹出一个元素。栈和队列的基本操作,都是时间复杂度为O(1)的操作。 双端队列结构在首尾都可以压入和弹出元素; 优先级队列会根据元素的优先级值,决定元素的弹出顺序。 优先级队列的结构为堆结构,并不是线性结构。 深度优先遍历(DFS)可以用栈来实现: 1进去,2进去,4进去,4是最深的节点要出去,4出去,5进去,5出去,(4,5都已经访问过)所以2出去,3进去,6进去,6出去,7进去,7出去,3出去,1出去。 [ 3进去,1进去,得到1往左第一个比他大的数为3,然后1出去,2进去,得到2往左第一个比他大的数为3
Last updated: