微信小游戏开发的市场前景与创新策略探讨
807
2022-10-19
#yyds干货盘点# 面试必刷TOP101:旋转数组的最小数字
1.简述:
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。
示例1
输入:
[3,4,5,1,2]
返回值:
1
示例2
输入:
[3,100,200,3]
返回值:
3
2.代码实现:
import java.util.ArrayList;public class Solution { public int minNumberInRotateArray(int [] array) { // 特殊情况判断 if (array.length== 0) { return 0; } // 左右指针i j int i = 0, j = array.length - 1; // 循环 while (i < j) { // 找到数组的中点 m int m = (i + j) / 2; // m在左排序数组中,旋转点在 [m+1, j] 中 if (array[m] > array[j]) i = m + 1; // m 在右排序数组中,旋转点在 [i, m]中 else if (array[m] < array[j]) j = m; // 缩小范围继续判断 else j--; } // 返回旋转点 return array[i]; }}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~