题目的链接在这里:https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba
题目大意
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。一、示意图
二、解题思路
正常和Arrays
正常
代码如下:
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
//一个旋转数组 他刚开始是非降的 变成了降低 找最小值
//比如 原名本是 1 2 3 4 5 变成了 3 4 5 1 2
//那就直接遍历 找到第一个变低的数值吧 首先肯定存在
//还需要排除一个特殊情况就是 1 2 2 2 2 2
for(int i=0;i<array.length-1;i++){
if(array[i]>array[i+1]){
return array[i+1];
}
}
//遍历结束了还没有的话 那就返回最后一个 和最后一个的最小值
return Math.min(array[array.length-1],array[0]);
}
}
正常
代码如下:
import java.util.*;
public class Solution {
public int minNumberInRotateArray(int [] array) {
//然后就是最简单的方法
Arrays.sort(array);
return array[0];
}
}