gpt4 book ai didi

java - 在递增、递减、递增和递减数组中查找最大值和最小值的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:11:22 27 4
gpt4 key购买 nike

给定一个数组,其中的值要么只增加,要么只减少或先增加再减少,如何找到此类数组的最大值和最小值?

最小值只是最终值中的最小值。

但是如何找到最大值呢?

一种方法是运行时间为 O(n) 的线性方法,是否可以使用对二分查找的一些修改在 O(logn) 中解决这个问题?

非常感谢任何代码(在 java 中)。

谢谢
诺西布

最佳答案

在斜率最多一次从增加变为减少的情况下,最大值出现在导数第一次变为负值时。换句话说,x[i]i 的最小值的最大值满足 (x[i+1] - x[i]) < 0 .

您确实可以在 O(log n) 中通过二分查找找到它时间。在每次迭代中,检查导数是否为负。如果是,则向左移动,否则向右移动。

关于java - 在递增、递减、递增和递减数组中查找最大值和最小值的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8197277/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com