[TOC] 题目地址 "hdu1276" 题干 代码和解释 本题使用了STL中的list,STL的list是双向链表。它的内存空间不必连续,通过指针来进行数据的访问,高效率地在任意地方删除和插入,插入和删除操作时常数时间。list和vector的优缺点正好相反,它们的应用场景不同: (1)vecto ...
分类:
其他好文 时间:
2019-08-17 09:15:24
阅读次数:
107
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例: MinStack minStack = new Min ...
分类:
编程语言 时间:
2019-08-07 22:45:22
阅读次数:
120
今天完成的是最小栈和有效括号的题最小栈要求是完成一个支持push top pop操作的,并能在常数时间内完成检索最小元素的栈。支持push top pop操作的栈并不难,但是常数级的查找是很困难的。通常的查找都是需要先排序,冒泡、插入和选择排序时间复杂度都是n2,快排的平均时间复杂度是logn。如果 ...
分类:
其他好文 时间:
2019-08-04 10:50:03
阅读次数:
105
题目 链接 题意:给出x数列的定义: $T_0 = a$ $T_1 = b$ $T_n = T_{n-2} \bigoplus T_{n-1} $ 求第 $n$ 项( $0 \leqslant a,b,c \leqslant 10^{18} $) 分析 $n$ 这么大,肯定是常数时间复杂度。 打表找 ...
分类:
其他好文 时间:
2019-07-17 18:56:04
阅读次数:
73
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素 来源:力扣(LeetCode)链接:https://leetc ...
分类:
其他好文 时间:
2019-07-16 08:29:37
阅读次数:
87
[toc] 一、 定义 ? 我们知道,左式堆每次操作的时间界是$O(logN)$。二项队列支持 合并、插入、删除最小值 ,每次插入的平均时间为 常数时间 ,而最坏时间是$O(logN)$。 ? 二项队列: 不是一棵堆序的树,而是堆序的树的集合,成为 森林 。 森林的每棵树都是 二项树(binomia ...
分类:
其他好文 时间:
2019-04-01 22:45:25
阅读次数:
172
哈希表 红黑树实现的符号表可以保证对数级别的性能,但我们可以做得更好。哈希表实现的符号表提供了新的数据访问方式,插入和搜索操作可以在常数时间内完成(不支持和顺序有关的操作)。所以,在很多情况下的简单符号表,用哈希表实现是最好的选择。 hash functions 如果键是小整数,那么我们可以直接使用 ...
分类:
其他好文 时间:
2019-02-22 21:10:13
阅读次数:
167
注:std::list C++11标准 list概述 list是一种序列容器,它允许在序列中的任意位置进行常数时间的插入和删除操作,并可以在两个方向上进行迭代(遍历)。 list容器是基于双链表实现的,可以将其包含的每个元素存储在不同且不相关的存储位置上。通过链接到前一个元素和后一个元素的每个元素的 ...
分类:
其他好文 时间:
2019-01-25 18:41:17
阅读次数:
170
什么是KMP算法: KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实 ...
分类:
编程语言 时间:
2019-01-24 01:17:15
阅读次数:
220
第一种实现 每一个节点都只是指向根节点 find是 常数时间复杂度的, union是 线性时间复杂度的。 第二种实现 每一个节点指向一个和自己在相同集合中的节点 find操作是树的高度时间复杂度,union操作也是 树的高度时间复杂度 第三种实现其实是第二种实现的改良版本 因为第二种实现,当树的高度 ...
分类:
其他好文 时间:
2019-01-02 10:37:17
阅读次数:
163