【发布时间】:2020-04-08 04:48:32
【问题描述】:
对于像[1, 2, 4, 6, 8, 7, 5] 这样的数组,我们如何有效地找到其中的最大数?
我们知道数组的第一部分是1, 2, 4, 6,,它是升序排列的,第二部分是8, 7, 5,它是一个降序排列的数组。
简单的解决方案是遍历数组,但鉴于数组由两个排序数组组成,我想搜索可以通过某种二进制搜索变体来完成,以实现o(logn) 运行时复杂度。但是我似乎无法想出解决方案。
【问题讨论】:
-
您不能对未排序的数据使用二分搜索
-
@sahasrara62 你不能,但你仍然可以使用分而治之的方法,这可能是 OP 所指的。在这种情况下,解决方案实际上是对二分搜索稍作修改的版本。
-
@MitchelPaulin 这可能是合并排序,他试图以更少的复杂性实现此类数据
-
@sahasrara62 "有效的方法:分而治之可用于在 O(Logn) 时间内找到一个峰值。这个想法是基于二分搜索技术来检查中间元素是否是峰值元素与否。”,您可能需要阅读 asnwer 中的文章