LintCode 14: First Position of Target

    xiaoxiao2024-01-12  189

    First Position of Target 中文English 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.

    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; } };
    最新回复(0)