/// <summary>
//下述算法只对严格单调的整数数组有效,复杂度O(N);
/// 查找数组中的一个数k,满足a[k] == k
/// 需保证a数组严格单调上升
/// </summary>
/// <returns>找到返回k,找不到返回-1</returns>
public staticint
FindNumber(int[]a)
{
if (a==
null)
return -1;
int left =0, right= a.Length;
while (left+
1< right)
{
int mid = left+
(right- left)/
2;
if (a[mid]>
mid)
right = mid;
else
left = mid;
}
return a[left]== left
? left:
-1;
}