由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教算法题
相关主题
构建一个快速查询字典(数据结构题)?有熟悉php的吗?问个文本处理
算法题一个STL堆操作怎样对堆顶元素做ShiftDown?
interview question: (RB tree vs. hash table)STL里的priority_queue到底有啥用?
load一个巨大的k-v table到一个view里,有搜索功能 怎么设计?一个hash table的简单问题
请教一下geohash的实现问个小问题
STL map一道作业题
template metaprogramming 的问题a question about hash.
linux 下从c++动态内存操作问题,heap size不够还是别的?Convert a binary tree to a BST... in place..
相关话题的讨论汇总
话题: heap话题: tree话题: 单词话题: string话题: 频率
进入Programming版参与讨论
1 (共1页)
c**a
发帖数: 316
1
一个巨大的文本, 输出频率最高的 1 million 个单词及其频率。
我的想法:
扫描文本的过程中按 string 建
1个 binary search tree,
(其实用 hash 也可以, 但是 STL 没有 hash)
map
同时维持 一个 Min Heap 记录 目前频率 最高的单词
vector >
结束时 把 heap 搞出来就行了。
c**a
发帖数: 316
2
请大家拍一拍。
我觉得 问题就是 BST 比 hash 慢一些。

【在 c**a 的大作中提到】
: 一个巨大的文本, 输出频率最高的 1 million 个单词及其频率。
: 我的想法:
: 扫描文本的过程中按 string 建
: 1个 binary search tree,
: (其实用 hash 也可以, 但是 STL 没有 hash)
: map
: 同时维持 一个 Min Heap 记录 目前频率 最高的单词
: vector >
: 结束时 把 heap 搞出来就行了。

b***y
发帖数: 2799
3
我用 prefix tree, 每拿到一个单词就插入到TREE里, 用一个叶结点记录这个单词出现
的数目.
prefix tree的深度是最长单词的长度, 基本上是个constant. 而binary tree的深度是
log(N), N是unique单词总数, N>= 1M, 所以BST的深度至少是20, 甚至更多.
所以我觉得PREFIX TREE更快点.

【在 c**a 的大作中提到】
: 一个巨大的文本, 输出频率最高的 1 million 个单词及其频率。
: 我的想法:
: 扫描文本的过程中按 string 建
: 1个 binary search tree,
: (其实用 hash 也可以, 但是 STL 没有 hash)
: map
: 同时维持 一个 Min Heap 记录 目前频率 最高的单词
: vector >
: 结束时 把 heap 搞出来就行了。

c**a
发帖数: 316
4
弱若的问一下, prefix tree 是啥?
哪里有写。
感觉就是 trie ?

【在 b***y 的大作中提到】
: 我用 prefix tree, 每拿到一个单词就插入到TREE里, 用一个叶结点记录这个单词出现
: 的数目.
: prefix tree的深度是最长单词的长度, 基本上是个constant. 而binary tree的深度是
: log(N), N是unique单词总数, N>= 1M, 所以BST的深度至少是20, 甚至更多.
: 所以我觉得PREFIX TREE更快点.

T*******i
发帖数: 4992
5
yes

【在 c**a 的大作中提到】
: 弱若的问一下, prefix tree 是啥?
: 哪里有写。
: 感觉就是 trie ?

b***y
发帖数: 2799
6
就是trie.

【在 c**a 的大作中提到】
: 弱若的问一下, prefix tree 是啥?
: 哪里有写。
: 感觉就是 trie ?

r*********r
发帖数: 3195
7
trie 还有好几种。
h****n
发帖数: 101
8

hashmap

【在 c**a 的大作中提到】
: 一个巨大的文本, 输出频率最高的 1 million 个单词及其频率。
: 我的想法:
: 扫描文本的过程中按 string 建
: 1个 binary search tree,
: (其实用 hash 也可以, 但是 STL 没有 hash)
: map
: 同时维持 一个 Min Heap 记录 目前频率 最高的单词
: vector >
: 结束时 把 heap 搞出来就行了。

c**a
发帖数: 316
9
在 大文本里找频率最高的1000 个词。
有个问题就是, 不管用 BST 还是 prefix tree,
如何 找到 频率最高的 1000 个词呢?
为了简单假设用 map;
如果保持一个min heap,长度为1000,
可以用 vector > ;
有 2种情况:
1. 当前词在 Heap 不在 heap 里, 这时 后者 不把当前词放进去, 后者把它和 root
交换(取决于根节点的值)
2. 如果在 Heap 里, 其相应节点的值要加 1
这时有两个问题,
1. 要找到 该节点
2. 破坏了 Heap 的结构, 如何恢复之?

【在 c**a 的大作中提到】
: 请大家拍一拍。
: 我觉得 问题就是 BST 比 hash 慢一些。

1 (共1页)
进入Programming版参与讨论
相关主题
Convert a binary tree to a BST... in place..请教一下geohash的实现
问个c++的template的问题STL map
这个Binary Tree的题来看看template metaprogramming 的问题
百度面试题,any idea?linux 下从c++动态内存操作问题,heap size不够还是别的?
构建一个快速查询字典(数据结构题)?有熟悉php的吗?问个文本处理
算法题一个STL堆操作怎样对堆顶元素做ShiftDown?
interview question: (RB tree vs. hash table)STL里的priority_queue到底有啥用?
load一个巨大的k-v table到一个view里,有搜索功能 怎么设计?一个hash table的简单问题
相关话题的讨论汇总
话题: heap话题: tree话题: 单词话题: string话题: 频率