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