在排序数组中查找数组的边界
解题思路:
二分法。
代码:
public static int[] SearchRange(int[] nums, int target)
{
int[] result = new int[2] { -1, -1 };
if (nums.Length == 0 || (nums.Length == 1 && nums[0] != target) || nums[nums.Length - 1] < target)
return result;
int i = 0, j = nums.Length-1;
while(i<=j)
{
int mid = (i + j) / 2;
if (nums[mid] > target)
j = mid - 1;
if (nums[mid] < target)
i = mid + 1;
if(nums[mid]==target)
{
result[0] = mid;
result[1] = mid;
while (mid - 1 >= i && nums[mid - 1] == target)
mid--;
result[0] = mid;
while (mid + 1 <= j && nums[mid + 1] == target)
mid++;
result[1] = mid;
return result;
}
}
return result;
}