题目描述:
For a given sorted array (ascending order) and a target
number,
find the first index of this number in O(log n)
time complexity.
If the target number does not exist in the array, return -1
.
If the array is [1, 2, 3, 3,
4, 5, 10]
, for given target 3
, return 2
.
If the count of numbers is bigger than 2^32, can your code work properly?
这题还是传统的二分法解决问题。
Mycode(AC = 78ms):
class Solution { public: /** * @param nums: The integer array. * @param target: Target number to find. * @return: The first position of target. Position starts from 0. */ int binarySearch(vector<int> &array, int target) { // write your code here if (array.size() == 0) return -1; long long l = 0, r = array.size() - 1; while (l + 1 < r) { int mid = l + (r - l) / 2; if (array[mid] < target) { l = mid + 1; } else if (array[mid] > target) { r = mid - 1; } else { r = mid; } } if (array[l] == target || array[r] == target) { return array[l] == target? l : r; } else { return -1; } } };