Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

hash table 哈希表也叫散列表 查询时间复杂度 O(1)[不包括有碰撞的情况,如果有大量碰撞会退化成o(n)] 面试做题法 1、clarification 2、possible solutions -> optimal (time & space) 3、code 4、test code 二叉搜索树 插入、删除、查找 O(logn)

测试地址:
    visualgo.net/zh/bst

堆和二叉堆的实现和特性 Heap:可以迅速找到一堆数据中的最大值或者最小值的数据结构 将根节点最大的堆叫做大顶堆或大根堆,根节点最小的堆叫做小顶堆或小根堆 常见的堆的二叉堆、斐波那契堆等 find O(1) delete O(logn) insert O(lonN) or O(1)

不同实现的比较:https://shimo.im/docs/Lw86vJzOGOMpWZz2/

二叉堆的特性
    通过完全二叉树来实现(注意:不是二叉搜索树[不满足查找 O(1)])
    二叉堆(大顶)它满足以下性质:
        是一棵完全树
        树种任意节点总是>=其子节点的值
实现细节
    1、二叉堆一般都通过"数组"来实现
    2、假设"第一个元素"在数组中的索引为0的话,则父节点和子节点的位置关系如下:
        (01)索引为i的左孩子的索引是(2*i+1)
        (02)索引为i的右孩子的索引是(2*i+2)
        (03)索引为i的父节点的索引是floor((i-1)/2)
    插入节点:
        1、新元素一律先插入到堆的尾部
        2、依次向上调整堆的结构(up)
    删除堆顶元素:
        1、将队尾元素替换到顶部(即堆顶被替换删除掉)
        2、依次从根节点向下调整整个堆的结构,一直到队尾即可 (down)
注意:二叉堆是堆(优先队列 priority_queue)的一种常见的且简单的实现;但并不是最优的实现

最小的k个数 直接排序 堆排序 快排的思想

图的属性 Graph(V,E) V-vertex:点 1、度-入度和出度 2、点与点之间:连通与否 E-edfe:边 1、有向和无向(单行线) 2、权重(边长)

图的表示
    邻接矩阵
    邻接表

    无向无权图
    有向无权图
    无向有权图

图的常见算法
    跟树的最大区别是一定要加 visited,因为会有环
    DFS
    BFS

    最短路径:dijkstra
        需要使用优先级队列
        https://www.bilibili.com/video/av25829980?from=search&seid=13391343514095937158