算法练习:二分查找

1.二分查找:

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

方法一:类二分法       二分法与此类似,添加一个mid值来进行比较

思路:1.判断第一个与最后一个数是否与target相等

           2.若第一个数小于target

           3.若最后一个数大于target

           4.数组中找不到与target对应的数

代码: 

 

方法二:

思路:直接使用indexOf()方法

indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。

代码:

 2.第一个错误版本:

你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。

假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。

方法:二分法

思路:1.设立一个mid值,判断isBadVersion(mid)

           2.如果为true,右边的值=mid-1,继续判断直到为false

           3.如果为false,左边的值=mid+1

代码:

3.搜索插入位置: 

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置

方法一:遍历

思路:遍历所有的数并判断target与其的大小

代码:

方法二:二分查找

代码:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值