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

LintCode二分查找题总结

LC上二分查找那一章有这么些题: 二分查找的题经常用于考,因为它虽然看似简单,但其实要完全正确却不容易,很容易写出死循环的程序。一个二分查找的程序可以很容易判断出一个人功底扎不扎实。 45...
  • luoshengkim
  • luoshengkim
  • 2016年08月03日 15:53
  • 2231

LintCode Binary Search 二分查找

给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。For a given s...
  • wutingyehe
  • wutingyehe
  • 2015年07月10日 17:51
  • 1009

LeetCode总结--二分查找篇

二分查找算法虽然简单,但面试中也比较常见,经常用来在有序的数列查找某个特定的位置。在LeetCode用到此算法的主要题目有: Search Insert Position Search for a...
  • linhuanmars
  • linhuanmars
  • 2014年06月16日 10:50
  • 13657

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

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

二分查找(Binary Search) 常见问题解决方法总结

缘由 今天浏览 何登成的技术博客  无意中发现了写的blog,二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现。 如下: 问题背景 今年的实习生招聘考试,我出了一道...
  • gfsfg8545
  • gfsfg8545
  • 2013年12月13日 21:48
  • 9076

二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现

问题背景   今年的实习生招聘考试,我出了一道二分查找(Binary Search)的题目。题目大意如下:   给定一个升序排列的自然数数组,数组中包含重复数字,例如:[1,2...
  • overstack
  • overstack
  • 2013年04月17日 09:08
  • 743

lintCode_二分查找

笔试面试算法题
  • Tina_yaoyao
  • Tina_yaoyao
  • 2015年10月28日 22:26
  • 1212

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

 Section I正确区分不同的查找算法count,find,binary_search,lower_bound,upper_bound,equal_range 本文是对Effective STL第...
  • applelppa
  • applelppa
  • 2007年11月21日 23:05
  • 11521

BINARY SEARCH 的一点说明

在sap 之abap语言中,有‍BINARY SEARCH这个查找条件。使用read table 来读取内表时,使用‍BINARY SEARCH可以大大的提高查找的效率,为什么呢?学过数据库的人会知道...
  • xx4565715
  • xx4565715
  • 2015年01月12日 15:04
  • 549

ABAP性能优化技巧—使用二分查找(Binary Search)选项

READ命令使用顺序查找数据表,这会降低处理速度。取而代之,使用binary search的附加命令,可以使用二分查找算法,可以帮助加快内表查找速度。 在使用binary search之前必须首先将内...
  • Victor9279
  • Victor9279
  • 2016年11月02日 14:52
  • 610
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LintCode Binary Search 二分查找
举报原因:
原因补充:

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