(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点功能。 进一步详细说 ...
分类:
编程语言 时间:
2017-10-15 21:25:10
阅读次数:
309
题意:求AC率,x/y 的最小值,x是区间数字的种类数,y是区间的长度。 分析: 二分答案比率。ans, 动态插入结点,一些区间的size会发生变化,是那些前面暂时没有新的结点的区间 size + 1。 ans*l,每一个区间只有一个ans*l,只与 l 相关,线段树单点更新。 用线段树维护区间的最 ...
分类:
其他好文 时间:
2017-08-04 16:07:58
阅读次数:
261
1. 求深度: recursive 遍历左右子树,递归跳出时每次加一。 2. 广度搜索 使用队列 3. 二叉查找树 由于二叉查找树是递归定义的,插入结点的过程是:若原二叉查找树为空,则直接插入;否则,若关键字 k 小于根结点关键字,则插入到左子树中,若关键字 k 大于根结点关键字,则插入到右子树中。 ...
分类:
其他好文 时间:
2017-07-25 19:42:08
阅读次数:
151
1.一个以递增方式排列的链表,去掉链表中的冗余值。 思路一:设有两个指针p和q。使p不动,q依次往后循环直到p->data不等于q->data,再将中间的冗余数据删除。 思路二:设有两个指针p和q,使p在前,q在后,仅仅要找到一个冗余就删除一个,依次往后删除。 输入的链表:1 3 3 3 3 6 6 ...
分类:
其他好文 时间:
2017-07-14 18:46:24
阅读次数:
135
1、序 具体实现了二叉查找树的各种操作:插入结点、构造二叉树、删除结点、查找、 查找最大值、查找最小值、查找指定结点的前驱和后继 2、二叉查找树简单介绍 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上全部结点的值均小于它的根结点的值。 (2)若右子树不空。则右子树上全 ...
分类:
编程语言 时间:
2017-06-06 20:51:46
阅读次数:
265
之前有过整理链表等的概念和基本算法。比较重要的是插入,删除,遍历,建表(尾插法,头插法)回忆链表尾部插入结点:1#include<iostream>2usingnamespacestd;34typedefstructNode{5intdata;//数据域6Node*next;//指针域7}Node,*List;89//在单链表的末位添加一个结点10vo..
分类:
其他好文 时间:
2017-04-14 10:15:45
阅读次数:
181
非循环单链表插入结点伪算法讲解 q插入p之后的伪算法:第一种表示方法:r = p->pNext; // p->pNext表示的是所指向结点的指针域,指针域又是指向下一个结点的地址p->pNext = q; // q保存了那一块结点的地址。q是一个指针变量,存放那个结点的地址。q->pNext = r ...
分类:
编程语言 时间:
2017-04-02 23:31:44
阅读次数:
217
题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 在上述队列的声明中可以看出,一个队列包含了两个栈stack1和stack2,因此这道题的意图是要求我们操作这两个“先进后出”的栈实现一 ...
分类:
其他好文 时间:
2016-09-20 18:06:28
阅读次数:
146
LinkedList List接口和Deque接口的一种双向链表实现。非同步的。 快速失败机制。ConcurrentModificationException 结点结构 插入结点 删除结点 add() remove() clear() get() set() 和队列相关的操作 peek() 和 el... ...
分类:
其他好文 时间:
2016-09-12 22:08:23
阅读次数:
167
B树的性质:根节点至少有两个孩子每个非根节点有[,M]个孩子每个非根节点有[-1,M-1]个关键字,并且以升序排列key[i]和key[i+1]之间的孩子节点的值介于key[i]、key[i+1]之间所有的叶子节点都在同一层以下代码实现了B树的查找和插入操作,删除操作暂未实现插入:先找到插入结点的..
分类:
其他好文 时间:
2016-07-22 14:49:32
阅读次数:
117