关闭

#14 First Position of Target

标签: lintcodebinary search
54人阅读 评论(0) 收藏 举报
分类:

题目描述:

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

If the array is [1, 2, 3, 3, 4, 5, 10], for given target 3, return 2.

Challenge 

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;
        }
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12032次
    • 积分:2242
    • 等级:
    • 排名:第16791名
    • 原创:221篇
    • 转载:1篇
    • 译文:0篇
    • 评论:10条
    文章分类
    文章存档