#yyds干货盘点# 面试必刷TOP101:旋转数组的最小数字

网友投稿 807 2022-10-19

#yyds干货盘点# 面试必刷TOP101:旋转数组的最小数字

#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小时内删除侵权内容。

上一篇:QuickPHP- PHP系统开发框架
下一篇:关于Springboot数据库配置文件明文密码加密解密的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~