随笔分类 - 数据结构
摘要:如何手写一个堆? 1. 插入一个数 2. 求集合当中的最小值 3. 删除最小值 4. 删除任意一个元素 5. 修改任意一个元素 堆的基本结构。 性质: 堆是一颗完全二叉树。按照序号来的 除了最后一层,其他都是满的 每一个点都是小于等于儿子 存储 用一维数组来存 x的左儿子是2x,x的右儿子是2x+1
        阅读全文
                
摘要:Trie树 1. 字母的类型不会很多 开数组的时候str\[maxn][26] maxn是字符串长度,26是指每一层大概有几个位置 存储方法: 1. a节点有没有存,没有就创建一个 2. 在字母的结尾打一个标记表示有个单词 dijistra要用堆优化
        阅读全文
                
摘要:栈的数组实现 1. 确定好栈底的元素 2. 边界条件 3. 变化过程 栈底是 1 栈底是0 队尾是 1 用栈来存储左边的所有元素,找到了其实就是把那个元素pop出来(有些元素永远不会被输出出来) 把逆序的点全部删掉,直到不是逆序的 图形理解 变成了一个严格单调上升的序列 cpp include in
        阅读全文
                
摘要:应用都可以用英文 为什么要用数组模拟 1. 效率原因 2. new Node(); // 非常慢,不会使用动态链表的形式 3. 十万个节点会超时 4. 如果直接初始化n个节点其实也是可以的 单链表 解题思路: 最主要还是理解三个操作: 1. add 2. remove 3. add_to_head 
        阅读全文
                

浙公网安备 33010602011771号