BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #44306同步于 2010/9/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

向大牛求助,一道去年网易的笔试题!

yinghan
2010/9/28镜像同步9 回复
简单的链表结构拥有很好的插入 删除节点性能, 但随机定位(获取链表第n个节点)操作性能不佳, 请你设计一种改进型的链表结构优化随机定位操作的性能, 给出设计思路及其改进后随机定位操作的时间复杂度
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
jmpesp机器人#1 · 2010/9/28
方案一: 增加一个数组 记录所有节点的指针情况 这样随机访问时间为O(1) 缺点是:链表插入删除后对该数组的更新代价高,而且数据静态分配,有大小限制 改进方案二: 用BST记录所有节点的指针情况,当然了能用平衡的BST最好了 这样, 随机访问的时间O(logn) 但却避免了方案一的缺点 ps. 网易啥时候笔试的? 日 我咋忘了投了呢 悲剧。。。
yinghan机器人#2 · 2010/9/28
【 在 jmpesp 的大作中提到: 】 : 方案一: : 增加一个数组 记录所有节点的指针情况 这样随机访问时间为O(1) : 缺点是:链表插入删除后对该数组的更新代价高,而且数据静态分配,有大小限制 : ................... 这是以前的笔试题,我挖坟挖出来的。。。 网易今天晚上7点的笔试,网申截止的早导致很多人都忘了投
xiecaiji机器人#3 · 2010/9/28
【 在 jmpesp 的大作中提到: 】 : 方案一: : 增加一个数组 记录所有节点的指针情况 这样随机访问时间为O(1) : 缺点是:链表插入删除后对该数组的更新代价高,而且数据静态分配,有大小限制 : ................... 哦。BST是二叉树的意思么。。大牛google笔的咋样
yaoyan机器人#4 · 2010/10/2
Binary Search Tree 二叉搜索树 【 在 xiecaiji 的大作中提到: 】 : : 方案一: : : 增加一个数组 记录所有节点的指针情况 这样随机访问时间为O(1) : : 缺点是:链表插入删除后对该数组的更新代价高,而且数据静态分配,有大小限制 : ...................
josephbupt机器人#5 · 2010/10/3
改进方案二有点主次颠倒了,为了改进一个简单链表,居然大动干戈弄出一棵树,莫不如在树里做插入、删除、搜索、定位呢。 【 在 jmpesp 的大作中提到: 】 : 方案一: : 增加一个数组 记录所有节点的指针情况 这样随机访问时间为O(1) : 缺点是:链表插入删除后对该数组的更新代价高,而且数据静态分配,有大小限制 : ...................
braveheart机器人#6 · 2010/10/5
哈希表
hman机器人#7 · 2010/10/7
那不就是直接的链式哈希了? 【 在 braveheart 的大作中提到: 】 : 哈希表 : -- : 只有心的强大才是真正的强大 : ...................
liuzhlai机器人#8 · 2010/11/25
我的算法:基本思想是来源于分块排序索引表: 定义一个索引表:索引表格式如下: 0 d 2d .... nd *p1 *p2 *p3 ..... *pn *pn 为指向链表第n个节点的指针 当 要定位链表第m项时,先在索引表中查找离目标节点最近的指针,索引表第一行元素是有序等差数列,可以用二分查找算法实现,然后用得到的指针操作链表,平均时间复杂度为lg(n/d) + d/2 因为索引表第一行元素是有序等差数列,可以用精算点算法查找,基本可以一次定位,具体方法是在二分查找中mid改为mid = low + (k - R[low].key)*(high-low)/(R[high].key -R[low].key])+0.5//加0.5是四舍五入,即使不能一次定位,mid也已经在待查元素附近,在用顺序查找,很快可以查到目标
kmplayer机器人#9 · 2010/11/26
同ls