问题名称:山脉阵列中的峰值指数
该问题需要找到山脉阵列中的峰值元素的索引。峰值元素被定义为大于其相邻元素的元素。该阵列保证具有山脉图案。
这样:
arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
&
arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
哪里
i
是所需的索引。
以下是我的代码的简化版本:
class Solution {
public:
int peakIndexInMountainArray(vector<int>& arr) {
int left = 0, right = arr.size() - 1;
int mid;
while (left <= right) {
mid = left + (right - left) / 2;
if (arr[mid] > arr[mid - 1] && arr[mid] > arr[mid + 1]) {
return mid;
} else if (arr[mid] < arr[mid + 1]) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
};
我在上面尝试了一些测试用例,很少能正常工作,但当我使用输入时
{3, 5, 3, 2, 0}
,则代码会触发运行时错误。
runtime error: addition of unsigned offset to 0x6030000000d0 overflowed to 0x6030000000cc (stl_vector.h)
我可以在自己的编译器上运行它,但在提交代码后,Leetcode上出现了这个错误。