If the target number does not exist in the array, return -1.
Example Example 1: Input: [1,4,4,5,7,7,8,9,9,10],1 Output: 0
Explanation: the first index of 1 is 0.Example 2: Input: [1, 2, 3, 3, 4, 5, 10],3 Output: 2
Explanation: the first index of 3 is 2.Example 3: Input: [1, 2, 3, 3, 4, 5, 10],6 Output: -1
Explanation: Not exist 6 in array.Challenge If the count of numbers is bigger than 2^32, can your code work properly?
解法1:类似Binary Search。 代码如下:
class Solution { public: /** * @param nums: The integer array. * @param target: Target to find. * @return: The first position of target. Position starts from 0. */ int binarySearch(vector<int> &nums, int target) { int n = nums.size(); if (n == 0) return -1; int start = 0, end = n - 1; while(start + 1 < end) { int mid = start + (end - start) / 2; if (nums[mid] < target) { start = mid; } else if (nums[mid] >= target) { end = mid; } } if (nums[start] == target) return start; if (nums[end] == target) return end; return -1; } };