Search for a Range[难]

Search for a Range[难]_第1张图片

这题看标题一直觉得是水题就没点进来。我的思路: 首先规定要O(logn)的话,基本上必须只能用binary search 来找。但是当你找到一个以后,首先并不知道这个是不是starting of target. 即便知道,还是需要往后遍历来知道什么时候ending。这样worst case可以O(n)。。

整体跟Rotated Sorted Array很像

首先画图: 有duplicate的sorted array

Search for a Range[难]_第2张图片

主要处理两种情况, 当target == mid时候,要么把Right 指针往左移动到mid点。或者把Left指针往right移动到mid点。

Search for a Range[难]_第3张图片

一共用2次binary search, 一次找起点,一次找终点。

Search for a Range[难]_第4张图片

牛逼啊!!!!1

我不想看九章的模板binary search

但是又不知道怎么找first time target appears, 和last time.

这个小哥的答案太屌了。

Search for a Range[难]_第5张图片

你可能感兴趣的:(Search for a Range[难])