“常用公式”在线计算,“设计手册”在线查询
给一个很大的数组a,再给m个查询。查询是找出在给定a的某个区间中最大的那个元素。比如a是a= {1,2,3,4,5,6,7,8,9,0} 查询是[0,3]则回答是4。设计一种算法或数据结构能最快的回答这m个查询。 (提示:做到任何范围查询在O(logn))
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 1 个关于本帖的回复 最后回复于 2013-8-16 10:28

沙发
王鹏 七品编修 发表于 2013-8-16 10:28:15 | 只看该作者
研发埠培训中心
典型的RMQ问题,如果数组是静态的可以做到O(nlogn)预处理,O(1)查询时间。如果数组需要动态更新,也可以通过线段树把update和query都做到O(logn)或者构造一棵树,跟节点是数组最大值,这个index把数组分成了两部分。再次递归取最大值....建好树之后就可以用二分查找得出结果
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台