面试题 08.03. 魔术索引

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public int findMagicIndex(int[] nums) {
return findMagicIndex(nums, 0, nums.length - 1);
}

private int findMagicIndex(int[] nums, int left, int right) {
if (left > right) {
return -1;
}

int mid = (left + right) >>> 1;
int index = findMagicIndex(nums, left, mid - 1);
if (index != -1) {
return index;
} else if (nums[mid] == mid) {
return mid;
} else {
return findMagicIndex(nums, mid + 1, right);
}
}
}

References

面试题 08.03. 魔术索引