Muk*_*ina 5 arrays algorithm binary-search
因此,我试图解决以下问题:
给定一个整数数组。在其中找到一个峰元素。如果数组元素不小于其相邻元素,则它是峰值。对于拐角元素,我们只需要考虑一个邻居。例如,对于输入数组{5,10,20,15},20是唯一的峰值元素。对于输入数组{10,20,15,2,23,90,67},有两个峰值元素:20和90。请注意,我们需要返回任何一个峰值元素。
来自以下链接:http : //www.geeksforgeeks.org/find-a-peak-in-a-given-array/
有一次他们说
如果中间元素小于其左邻元素,则左半部分始终存在一个峰值。
在这一点上,我感到困惑,我们如何确定左半部分会有一个峰元素?我只能从中得出的结论是,至少有1个元素肯定大于其右邻元素(即a [m-1]),所以有可能它可能是峰值元素)。我在stackoverflow和其他站点上进行了研究,但是对于上述结论找不到很好的解释
谢谢您的帮助!
假设您正站在一个比其左邻居低的中间元素上:
element
you
element
Run Code Online (Sandbox Code Playgroud)
您向左看。它看起来像一座小山。
假设您爬上那座山。你看到了什么?好吧,有三种可能性:
1.
element
you
element
element
2.
you
element element
element
3.
you
element
element element
Run Code Online (Sandbox Code Playgroud)
在案例2和案例3中,万岁!您已经找到一个高峰。在第一种情况下,您将继续攀爬。最终,您看到的元素不高于您,或者碰到了左墙。无论哪种情况,您都会发现一个高峰。
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |