【发布时间】:2010-06-12 14:46:04
【问题描述】:
一个序列是双调的,如果它单调增加然后单调去- 折痕,或者如果它可以循环移动以单调增加,然后 单调递减。例如序列 (1, 4, 6, 8, 3, -2) , (9, 2, -4, -10, -5) 和 (1, 2, 3, 4) 是双调的,但 (1, 3, 12, 4, 2, 10) 不是 双调。
如何判断给定的序列是否是双调的?
我有以下意见。我们可以走到n/2,其中n是数组的长度,然后检查是否
(a[i] < a[i + 1]) and (a[n - i - 1] < a[n-1 - (i + 1)])
这是正确的吗?
【问题讨论】:
-
您的情况在我看来并不正确。考虑
4 3 2 1。你会检查a[0] < a[1],这不是真的,所以你会报告它不是双音的,对吗?但是你可以将数组向右移动一个位置,得到1 4 3 2,它是双调的。所以你的方法行不通。您是否正在寻找比O(n^2)更快的东西?我很确定我有一个O(n^2)解决方案。
标签: algorithm