盛满了咖啡的茶杯,表面蒙着一层水雾。
杯中液体微微荡漾,散发着浓郁的香味。
杨成轻抿一口,顿时感觉神清气爽。
深夜的瞌睡似乎也驱散了不少呢。
他开始思索这个问题。
顺序遍历判断,的确不是个好方法。
如何最小化判断次数,是这个问题的关键。
这个问题似乎跟二分搜索有关联?
杨成突然想到这点。
肯定是有所区别的,但思想上有共性。
二分搜索不断缩小区间的做法在这个问题同样适用。
不过得做一点小小的改变。
杨成在脑海中飞快地整理思绪。
假设left指针指向第1个版本。
而right指针指向第n个(最后一个)版本。
取left与right指针的中间版本mid版本。
如果mid版本是坏的,有一个问题值得注意:
它有可能是第一个坏的版本,我们无法确定。
所以将right指针指向mid版本。
相当于在右边缩小区间。
而如果mid版本是好的,说明一个问题:
第一个坏的版本肯定是在mid版本的右侧。
所以将left指针指向mid+1的版本。
相当于在左边缩小区间。
在left和right做出改变后,继续分析mid版本。
重复这个过程...
直到left与right指针碰面。
此时right指向的版本,就是第一个坏的版本。
思绪理通顺了,编写代码是水到渠成的事儿。
在项目经理的注视下,杨成写出了一段短小而精悍的代码。
他长吁一口气,干了这杯咖啡。
项目经理微微点头,拍拍他的肩膀。
“小杨啊,继续好好干”。
“我在你这个年纪,可是吃苦耐劳得很呢”。
公司里,依然灯火通明,热火朝天。
而窗外的黑夜却已是寂静一片。