下面我有一个算法,它计算有序数组中所有唯一的整数,但我不确定它是如何使用二进制搜索来做到这一点的?有谁能解释一下是怎么回事吗?谢谢.
int unique(int[] a) {
int i = 0;
int count = 0;
while (i < a.length) {
i = nextIndex(a, i, a[i]);
count++;
}
return count;
}
int nextIndex(int[] a, int l, int target) {
int r = a.length - 1;
while (l <= r) {
int mid = l + (r - l) / 2;
if (a[mid] == target) l = mid + 1;
else r = mid - 1;
}
return r + 1;
}