#14 First Position of Target

原创 2016年08月30日 13:11:47

题目描述:

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


版权声明:三千微尘里,吾宁爱与憎

14.First Position of Target-二分查找(容易题)

二分查找 题目给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。 样例在数...

Hand Book of Position location.7z.002

  • 2014年09月25日 10:12
  • 29.24MB
  • 下载

Leetcode【40】:First Missing Position

题目:给一组数字,乱序,找到第一个不存在的正整数。比如

Hand Book of Position location

  • 2013年01月23日 18:55
  • 47.68MB
  • 下载

commands commence before first target. 报错

在写好makefile 文件后 用make -f filename 命令进行编译的时候报错  原因是makefile 格式不正确。 改正后的写法: myapp: ...

Unable to resolve target 'android-14'解决方法

1、通过import方法导入工程后,因为原工程所配置的版本和你自己机器所配置的版本不一样,所以出现了如图的错误 2、找到工程目录下的res文件夹里面的project.properties文件,打开它...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#14 First Position of Target
举报原因:
原因补充:

(最多只允许输入30个字)