LintCode Binary Search 二分查找

原创 2015年07月10日 17:51:37

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

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.

样例
在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。

挑战
如果数组中的整数个数超过了2^32,你的算法是否会出错?

class Solution {
    /**
     * @param nums: The integer array.
     * @param target: Target to find.
     * @return: The first position of target. Position starts from 0.
     */
    public int binarySearch(int[] nums, int target) {
        int low = 0;
        int high = nums.length;
        while(low <= high) {
            int mid = (high - low)/2 + low;
            if(nums[mid] == target){
               while(mid - 1 >= 0 && nums[mid - 1] == target){
                   mid--;
               }
               return mid; 
            } 
            else if(nums[mid] < target){
                low = mid + 1;
            }else {
                high = mid - 1;
            }
        }
        return -1;
    }
}

相关文章推荐

二分查找 Binary Search(C++)

  • 2008年07月30日 14:24
  • 891B
  • 下载

STL中的二分查找--lower_bound/upper_bound/binary_search

前言: STL中关于二分查找的函数主要有三个,分别是lower_bound/ upper_bound/ binary_search。这三个函数都运用于有序区间,当然这也是二分查找思想运用的前提,下面...

(转)STL之二分查找(binary_search(),lower_bound(),upper_bound() )

二分查找(二分检索):   二分法检索又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中,     首先将给定值key与   字典中间位置上元素...

漫谈二分查找-Binary Search

转自:http://duanple.blog.163.com/blog/static/709717672009049528185/ 历史上,Knuth在其>一书的第6.2.1节指出:...

【 STL之二分查找 (Binary search in STL)】

正确区分不同的查找算法count,find,binary_search,lower_bound,upper_bound,equal_range 本文是对Effective STL第45条的一个总结...

常用算法——二分查找(Binary Search)

1.二分查找原理 首先,待查找的数组或集合必须是已经过排序的,本文以从小到大递增数组为例讲解。 选取数组中点,将待查找目标与数组中点的值做比较。 如果目标小于中点值,则在数组起始位到数组中点这一段再获...

二分查找(Binary Search)

二分查找算法     二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法...

减治法——二分查找算法(Decrease and Conquer by a Factor - Binary Search Algorithm)

减治法——二分查找算法(Decrease and Conquer by a Factor - Binary Search Algorithm)减治法简介(Introduction) Decease-...

算法导论第2章(3) 二分查找 binary search

二分查找(分治法)。 二分查找也是一种分治法的实现,每一次查找将数据分为两个部分,问题规模都减小一半。这样查找的时间复杂度为logN。因为其实查找过程建立了一棵有N个节点的二叉树,查找次数是这棵树的...

二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现[谁有源码麻烦贴过来个链接学习学习]

原文http://hedengcheng.com/?p=595#more-595 问题背景  今年的实习生招聘考试,我出了一道二分查找(Binary Search)的题目。题目大意如下:   给定一个...
  • kayzhao
  • kayzhao
  • 2013年09月07日 19:00
  • 568
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LintCode Binary Search 二分查找
举报原因:
原因补充:

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