Redian新闻
>
找个先增后减的数组里的数。
avatar
找个先增后减的数组里的数。# JobHunting - 待字闺中
k*r
1
有一个数组,数组里元素先递增再递减再递增,然后给一个element, 返回该element
的index或者-1, input : [2,3,5,7,-3,-2,-1,4]  element:-3 
160;返回4。
有人会做吗?谢
avatar
k*r
2
觉得很简单嘛同学们,给个hint呗
avatar
h*e
3
先两个二分找到两个peak 然后用3段做二分找val?
avatar
l*o
4
二分找到peak,再分两部分分别二分查找?
avatar
k*r
5
嗯,记得好像也是说先找到peak,再分段bs。
但是,怎么找peak呢,比如说mid值大于start的值,peak在左右还是都有可能啊。

【在 h*******e 的大作中提到】
: 先两个二分找到两个peak 然后用3段做二分找val?
avatar
C*7
6
不断二分,看中点趋势
砍在上升段:
比较中点和起点,小于等于起点的话只取左半边;大于起点两边都继续二分
砍在下降段:
就可以开始两边取peak(因为其他情况都是砍在上升段,所以此时可以保证两peak在当
前两端内)
最后分三段二分找

【在 k****r 的大作中提到】
: 嗯,记得好像也是说先找到peak,再分段bs。
: 但是,怎么找peak呢,比如说mid值大于start的值,peak在左右还是都有可能啊。

avatar
k*r
7
可行,thx

【在 C*7 的大作中提到】
: 不断二分,看中点趋势
: 砍在上升段:
: 比较中点和起点,小于等于起点的话只取左半边;大于起点两边都继续二分
: 砍在下降段:
: 就可以开始两边取peak(因为其他情况都是砍在上升段,所以此时可以保证两peak在当
: 前两端内)
: 最后分三段二分找

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。