Я нашел эту проблему на leetcode, я решил ее на своей платформе. Для тестов я использовал 1000 элементов массивов и никогда не получал ошибку. На платформе leetcode он выдает ArrayIndexOutOfBoundsException. Если вы внимательно посмотрите, то элементы a, b или n не могут идти дальше длины массива. Это описание проблемы:Минимум в повернутом сортированном массиве ArrayIndexOutOfBoundsException
Предположим, что отсортированный массив повернут с некоторой неизвестной вам опорой. (т. Е. 0 1 2 4 5 6 7 может стать 4 5 6 7 0 1 2). Найти минимальный элемент. Вы можете предположить, что в массиве не существует дубликата.
public class Solution
{
public int findMin(int[] num)
{
int a = 0;
int b = num.length - 1;
int n = (a + b)/2;
while (true)
{
if (num[n] < num[n+1] && num[n] < num[n-1])
break;
if (num[a] < num[b])
{
b = n;
n = (a + n)/2 + 1;
}
else
{
a = n;
n = (b + n)/2;
}
}
return num[n];
}
}