Data Structure

Queue

可用数据结构:arraylist vector(cpp)

Stack

求每个数以它为中心往左/右第一个比它小/大的数 用栈(画图,递增/减的线上以当前点切分为大于/小于的2段)联想二叉树压入栈,左右中关系

计算宽度 y-x-1,中间除x,y外长度

Hash

closed hasing不支持删除操作

hashtable线程安全 但是加锁了,慢。写程序避免用锁

Java hashmap O(1)

看一个数在不在里面,用Map

Heap 堆要填满

Minheap

插入:先加入最底下最左边,一个个网上换 shiftup

删除:也是把用最后那个元素盖住,把该元素移到删除点,然后和小的那个儿子换(shift up/shit down)

建堆:每个元素Push/pop O(logn)N个数每个数都push pop O(2nlogn)

比快排,merge sort都慢,空间也大。所以不大用堆排序

实现heap,用数组Array比较好,链表也行

http://www.cse.hut.fi/en/research/SVG/TRAKLA2/tutorials/heap_tutorial/taulukkona.html

下标从1开始,0位记载数组的size,则 left child: i*2, right child:i*2+1, parent i/2

如果顶格开始,从0开始 则left child: i*2+1, right child:i*2+2 parent :(i-1)/2

Priority Queue java implementation

Last updated

Was this helpful?