剑指offer JZ6

JZ6

原题链接

题目

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

核心

看似简单,实则考虑数组查找的优化问题

思路

傻乎乎遍历 2分

$T:O(\frac{n}{2} )$

$S:O(1)$

要不就不转,第一个元素是最小,要不就转,那突然下落的地方肯定是最小元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
if (rotateArray.empty()) return 0;
int min = rotateArray[0];
for (int i = 0; i < rotateArray.size() - 1; i++) {
if (rotateArray[i] > rotateArray[i + 1]) {
min = rotateArray[i + 1];
break;
}
}
return min;
}
};

二分法 5分

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2023 Jack Kong
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信