算法剑指 Offer 11. 旋转数组的最小数字
Posted Rose J
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法剑指 Offer 11. 旋转数组的最小数字相关的知识,希望对你有一定的参考价值。
目录
1.题目
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
给你一个可能存在 重复 元素值的数组
numbers
,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组[3,4,5,1,2]
为[1,2,3,4,5]
的一次旋转,该数组的最小值为1。示例 1:
输入:[3,4,5,1,2] 输出:1
示例 2:
输入:[2,2,2,0,1] 输出:0
2.思路
解题思路
- 冒泡排序暴力 x
- Arrays.sort() x
- 若是基本类型,需要转化为对应的对象类型(例如:int转化为integer)
- arrays.sort()可以排序基本对象类型,但是不可以排序基本数据类型
- 这里使用的是二分法来解决问题 √
3.答案
class Solution
public int minArray(int[] numbers)
int low = 0 ;
int hight = numbers.length -1;
while (low<hight)//注意low和hight的大小限制
int pv=(low+hight)/2;
if (numbers[pv]<numbers[hight])
hight=pv;
else if (numbers[pv]>numbers[hight])
low=pv+1;
else
hight--;
return numbers[low];
以上是关于算法剑指 Offer 11. 旋转数组的最小数字的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点#剑指 Offer 11. 旋转数组的最小数字
剑指offer(C++)-JZ11:旋转数组的最小数字(算法-搜索算法)
剑指offer(C++)-JZ11:旋转数组的最小数字(算法-搜索算法)