查看: 3232|回复: 3
收起左侧

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

|只看干货 |刷题
头像被屏蔽

分享帖子到朋友圈
wwwyhx | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

上一篇:Google : Print a spiral array
下一篇:Amazon : 二叉树中寻找节点值的和等于指定数字的路径个数
wsx123 2011-6-19 17:03:26 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   85% (6)
 
 
14% (1)    👎
一点都看不懂呢   郁闷啊
回复

使用道具 举报

头像被屏蔽
 楼主| wwwyhx 2011-6-20 20:18:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

clseer 2011-10-9 10:06:10 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (1)
 
 
0% (0)    👎
两个算法:
(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]的最小值。

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■拉群请前往同学同事飞友|拉群结伴版块,其他版块拉群,帖子会被自动删除
■论坛不能删帖,为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://tools.1point3acres.com/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

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