lintcode 二分查找

作者: yzawyx0220 | 来源:发表于2016-12-13 15:07 被阅读614次

给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。
样例
在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。
典型的二分查找问题,考虑到数组中有重复的数字,而且要返回的是第一次出现的下标,因此在判断的时候分为两种可能:中位数小于target和中位数大于等于target,大于等于target保证我们需要找到的数总是第一个出现的:

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
        int left = 0,right = array.size()-1;
        int mid = (left + right) / 2;
        while (left < right) {
            if (array[mid] < target) left = mid + 1;
            if (array[mid] >= target) right = mid;
            mid = (left + right) / 2;
        }
        return array[mid] == target ? mid : -1;
    }
};

相关文章

  • lintcode 二分查找

    给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的...

  • OJ lintcode 二分查找

    给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的...

  • js刷林扣 lintcode(2017年1月)

    题目前的数字是对应的lintcode的题目序号 14.二分查找 给定一个排序的整数数组(升序)和一个要查找的整数t...

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 数据结构和算法--二分查找

    二分查找 二分查找的思想 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序...

  • 二分查找 (lintcode:first-position-of

    二分查找 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第...

  • OJ:lintcode 经典二分查找问题

    在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1您在真实的面试中是否遇到过这个题?Yes样例...

  • 二分查找

    [TOC] 二分查找的基础模板 二分查找靠左的Index基础模板 二分查找靠右的Index基础模板 二分查找插入t...

  • 二分查找法

    二分查找法 二分查找法(递归)

  • 二分查找(递归、非递归)

    二分查找(递归) 二分查找(非递归)

网友评论

    本文标题:lintcode 二分查找

    本文链接:https://www.haomeiwen.com/subject/mbqbmttx.html