二分查找。
描述:
一个递增序列,中间某个位置切一刀,之后前后两部分交换位置。找到此时的最小值。如
[4,5,6,7,0,1,2]
返回0。思路:
两种情况:
第一,数组中没有重复元素时,此情况容易,当这一刀没有切,数组递增,第一个元素为最小值。如果切下去了,那么最小值应该在数组切面处,如上述例子,切面在7和0,而最小值就在切面处。所以接下来的步骤就是二分查找法找切面。
第二,数组中含有重复元素,此时情况较多,需要将所有情况都找到,较困难,这里是别人的如何找到所有情况的方法。
实现:
1 | class Solution { |