![]() |
1
0
一个天真的做法是这样做,这是如下。你的逻辑是正确的,这就是我实现的。我改变了排序(NlogN),只找到了最小和最大的两个数字。我没有编译代码,也不确定它是否按预期工作。它具有(n*n*n)的总体复杂性。 执行时间可以通过执行一些额外的检查来提高:
|
![]() |
2
0
可能有一些bug,但这里是O(n logn)解决方案的一般思想: 我们有一个从startIdx到endIdx的元素窗口。如果它是一个有效的子数组,这意味着我们可以扩展它,我们可以添加另一个元素到它,所以我们增加endIdx。如果它是无效的,那么无论我们如何扩展它都是无效的,所以我们需要通过增加startIdx来减少它。 伪码:
|