gpt4 book ai didi

java - 给定一个未排序的数组,在 O(n) 时间内找到 A[j] - A[i] 的最大值,其中 j>i..

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

这是一个 Amazon 面试问题。我已经使用动态在 O(n) 中解决了这个问题编程。但我想知道是否有比O(n)

更多的优化

例如假设下面是数组

3 7 1 4 2 4 returns 4

5 4 3 2 1 returns Nothing

4 3 2 2 3 returns 1

这是我写的代码Code

最佳答案

假设您有 int A[N]

int res = -1;
int min_value = A[0];
for(int i=1; i<N; i++) {
// A[i] - A[j] is maximal, when A[j] is minimal value from {A[0], A[1],.., A[i-1]}
res = max(res, A[i] - min_value);
min_value = min(min_value, A[i]);
}
return res;

复杂度 O(N)。

您需要检查 N 个元素,因此 O(N) 是您能得到的最好结果。

关于java - 给定一个未排序的数组,在 O(n) 时间内找到 A[j] - A[i] 的最大值,其中 j>i..,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9988284/

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