查看: 3636| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

Adobe : Given an array A[i..j] find out maximum j-i such that A[i]<a[j]

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
Given an array A[i..j] find out maximum j-i such that A[i]<a[j] in
O(n) time.

PS . 是前面一个柱状统计图最大矩形面积的一个子问题

上一篇:Google : Print a spiral array
下一篇:Amazon : 二叉树中寻找节点值的和等于指定数字的路径个数
🔗
wsx123 2011-6-19 17:03:26 | 只看该作者
全局:
一点都看不懂呢   郁闷啊
回复

使用道具 举报

🔗
 楼主| wwwyhx 2011-6-20 20:18:00 | 只看该作者
全局:
哈,发现那个Discuz! Board太神奇了!!!
回复

使用道具 举报

🔗
clseer 2011-10-9 10:06:10 | 只看该作者
全局:
两个算法:
(1)O(NlogN)的算法:
定义一个辅助数组B[], B[i]保存A[0...i]内的最小值,B[]是非递增序列,则:
对于A[k],在B[0...k-1]中二分查找小于A[k]的最大值B[s],maxValue=max{maxValue, k-s}
(2)O(N)的算法:
定义两个辅助数组LMin[]和RMax[], LMin[i]保存A[0...i]内的最小值, RMax[j]保存A[j...n-1]内的最大值,
刚开始两个指针i,j分别指向LMin[]和RMax[]开始,
若:LMin[i]<RMax[j], 则:j++
若:LMin[i]>=RMax[j], 则:i++
这个过程中j-i最大值即为所求。
这个比较容易证明:
LMin[]:对于A[i]<A[j]且i<j,则对于某个A[k],(k>j>i),则k-i>k-j,此时只计算k-i即可,也就是保存A[0...j]的最小值。

这个问题是是前面一个柱状统计图最大矩形面积的一个子问题? 没看出来,楼主能解释一下吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表