由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教一个数据结构题
相关主题
LinkedIn 的一道onsite题rocket fuel/online test/auto racer解法
G家面题国内Google电面两轮 已挂
这周一的G家onsite,虽然挂了,还是发个面筋攒人品吧刷题看见这个blog
一道设计题G面经里这个怎么做
BST的insertion请教这道题有没有比较efficient的方法
G/F面经请问有哪些高级点的数据结构需要了解啊?
求教一道软家面试题的最优解MS面试题
M家两道面试题
相关话题的讨论汇总
话题: 数据结构话题: int话题: insert话题: query话题: rank
进入JobHunting版参与讨论
1 (共1页)
j******8
发帖数: 105
1
设计一个数据结构,包括两个操作
void insert(int d): 插入一个int
int query(int d): 查询d在数据结构中的排名
example:
Insert: 4, 5, 3
query(4) gives 2;
insert: 1
query(4) gives 3;
如何设计保证两个操作都是O(log(n))?
s*******g
发帖数: 22
2
二叉树的感觉
a********5
发帖数: 1631
3
BST带RANK。每个接点存一个INT做RANK,表示这个节点左子树大小。
插入的时候在找插入位置的过程中,如果当前节点要往左走,则把当前节点的RANK加一。
查询的时候,在查找元素的过程中,如果当前节点要往右走,累加当前节点的RANK。
j******8
发帖数: 105
4
Thanks a lot !
I'm too weak to see this solution...

一。

【在 a********5 的大作中提到】
: BST带RANK。每个接点存一个INT做RANK,表示这个节点左子树大小。
: 插入的时候在找插入位置的过程中,如果当前节点要往左走,则把当前节点的RANK加一。
: 查询的时候,在查找元素的过程中,如果当前节点要往右走,累加当前节点的RANK。

x*****a
发帖数: 610
5
加RANK这个想法是对的
但是普通BST不可
普通BST无法保证查找一定是O(log(n))。最坏情况可能是O(n)。
如果题目要求是“保证O(log(n))”
就必须用self-balancing BST, 比如红黑树。
不过我不认为这世界上有几个人能不看任何资料在短时间内写出红黑树的插入算法
所以这题应该说说就行,不用真写code

一。

【在 a********5 的大作中提到】
: BST带RANK。每个接点存一个INT做RANK,表示这个节点左子树大小。
: 插入的时候在找插入位置的过程中,如果当前节点要往左走,则把当前节点的RANK加一。
: 查询的时候,在查找元素的过程中,如果当前节点要往右走,累加当前节点的RANK。

d*********e
发帖数: 352
6
什么公司?
j********r
发帖数: 127
7
不怕浪费空间或者已知输入范围的话,用线段树segment tree
操作是O(logK) k是数据范围
每个节点存节点下所有有值节点数目,然后求区域极小值到当前值之间区域的所有点数

【在 j******8 的大作中提到】
: 设计一个数据结构,包括两个操作
: void insert(int d): 插入一个int
: int query(int d): 查询d在数据结构中的排名
: example:
: Insert: 4, 5, 3
: query(4) gives 2;
: insert: 1
: query(4) gives 3;
: 如何设计保证两个操作都是O(log(n))?

1 (共1页)
进入JobHunting版参与讨论
相关主题
两道面试题BST的insertion
BST合并的面试题G/F面经
请教一个BST找Median的题目求教一道软家面试题的最优解
google电面(挂了)M家
LinkedIn 的一道onsite题rocket fuel/online test/auto racer解法
G家面题国内Google电面两轮 已挂
这周一的G家onsite,虽然挂了,还是发个面筋攒人品吧刷题看见这个blog
一道设计题G面经里这个怎么做
相关话题的讨论汇总
话题: 数据结构话题: int话题: insert话题: query话题: rank