博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
14. 二分查找
阅读量:5079 次
发布时间:2019-06-12

本文共 754 字,大约阅读时间需要 2 分钟。

题目

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

样例

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

挑战 

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

 

题解

普通二分,注意边界判定即可,一般特别测试下数组1个数字,2个数字等就可以了

def binarySearch(self, nums, target):      start = 0        end = len(nums) - 1        while 1:            if start > end:                return - 1            length = end - start - 1            mid = (end+start) /2            if nums[mid] == target:                if mid-1<0 or nums[mid-1] != target:                    return mid                else:                    end = mid -1            elif nums[mid] < target:                start = mid + 1            else:                end = mid - 1

 

转载于:https://www.cnblogs.com/usp10/p/8612753.html

你可能感兴趣的文章
LinkedList源码分析
查看>>
TF-IDF原理
查看>>
用JS制作博客页面背景随滚动渐变的效果
查看>>
JavaScript的迭代函数与迭代函数的实现
查看>>
一步步教你学会browserify
查看>>
Jmeter入门实例
查看>>
亲近用户—回归本质
查看>>
中文脏话识别的解决方案
查看>>
CSS之不常用但重要的样式总结
查看>>
Python编译错误总结
查看>>
URL编码与解码
查看>>
日常开发时遇到的一些坑(三)
查看>>
Eclipse 安装SVN插件
查看>>
深度学习
查看>>
TCP粘包问题及解决方案
查看>>
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>