一、题目描述
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。
二、输入描述
3,4,5,1,2
三、输出描述
1
四、测试用例
测试用例1
1、输入
1,2,3,4,5
2、输出
1
3、说明
非旋转数组,其最小值即为第一个元素1。
测试用例2
1、输入
2,3,4,5,1
2、输出
1
3、说明
数组经过旋转后最小值为1。
五、解题思路
- 读取输入的旋转数组,将其转换为整数数组;
- 判断特殊情况:如果数组长度为0,则返回0;
- 初始化左指针i为0,右指针j为数组长度减1;
- 进行二分查
这篇博客详细介绍了如何解决华为OD机试中的一道真题,即在旋转后的非降序数组中寻找最小值。通过二分查找策略,首先读取输入的旋转数组并转化为整数数组,然后初始化左右指针进行查找。在查找过程中,根据数组中点元素与右指针元素的大小关系不断缩小搜索范围,直至找到最小值。博客提供了Java算法源码并展示了运行效果。
订阅专栏 解锁全文
878

被折叠的 条评论
为什么被折叠?



