力扣–二分法
今天也是刷算法的一天,作为小白刚刚入门Java,跟着力扣上的刷题计划进行刷题,今天刷的是一道更为简单的二分法,那么话不多说,直接开始总结。
1.题目要求
2.算法思路
所谓二分法,和我们经常玩的猜数字游戏一样,比如1-100的有序数组中,我们要猜的数为20,那么首先我们猜一个50,很明显比20大,那就在1-49之间猜,我们猜25,比20大,那么我们要在1-24之间寻找,我们猜13,很明显比20小,从14-24之间猜,猜20,中了。
那么我们根据这个思路去编写代码:
- 先定义区间的头和尾部的标号-
- 然后就开始写判断语句
在while()判断中,如果我们的区间 nums 最前面的数的序号比最后面的序号小(注意这个题的前提是有序数组),那么这个循环一直运行,运行的内容就是去猜数字 target 了,如果第一次就遇到数组中间的值等于我们的目标值,那么直接返回该值的序号,也就是下标。如果目标值比中间的数大,那么该区间就更新一次,更新内容为使一开始的序号为该数组中间的序号再加一,如果目标值比中间值小,那么最后面的数的序号更新为中间的序号减一。当整个数组都判断完后,还是没有找到我们的目标值,则返回一个 -1 即可,或者也可以去抛一个异常&#