阅读文本大概需要 2.7 分钟。
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组为的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
思路
第一眼看到这个题还没明白什么意思,后面才知道其实就是一个找一个旋转数组中最小数字。想到这里思路就比较清晰了,首先判断一下是不是空数组,然后再判断数组的个数是不是为1,因为假如为1,那么最小的数就是这个唯一的数了。
注意题目中说的非递减数组,那么就可能是递增数组,或者是[1,2,2,2,2,2]这样的数组旋转。接下来就是写一个循环遍历一下,一旦发现前面的数字大于后面的数字,那么后面那个数字就是最小的数字了。
源码
项目工程
如果你想看到《剑指offer》的所有源码,欢迎 star 我的 github project。
《剑指offer》的 github 地址:https://github.com/liuenci/GoOffer
领取 专属20元代金券
Get大咖技术交流圈