LintCode 14.First Position of Target

    xiaoxiao2022-06-22  188

    LintCode 14. First Position of Target

    DescriptionExampleChallengSubmission1. 二分法

    Description

    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.

    给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-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.

    Challeng

    If the count of numbers is bigger than 2^32, can your code work properly?

    Submission

    1. 二分法

    因为是非单调递增序列,采用二分思想进行求解即可。 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) { // write your code here int start = 0; int end = nums.size() - 1; if(nums.size() == 0) { return -1; } int mid; while(start + 1 < end) { mid = start + (end - start) / 2; if (nums[mid] >= target) { end = mid; } else { start = mid; } } if(nums[start] == target) { return start; } if(nums[end] == target) { return end; } return -1; } };

    最新回复(0)