题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
解题思路:采取栈存取最小值,当数组值小于栈,则push到栈中,最终栈的pop就是最小值
剑指offer的代码:
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public int minNumberInRotateArray(int [] array) {
Stack<Integer> stack = new Stack<Integer>();
stack.push(array[0]);
for(int i=0;i<array.length;i++){
if(array[i]<stack.peek())
stack.push(array[i]);
}
return stack.peek();
}
}
- 本机测试的代码:
- package pratice712;
- import java.util.ArrayList;
- import java.util.Stack;
- public class RotateMinnum712 {
- public static int minNumberInRotateArray(int [] array) {
- Stack<Integer> stack = new Stack<Integer>();
- stack.push(array[0]);
- for(int i=0;i<array.length;i++){
- if(array[i]<stack.peek())
- stack.push(array[i]);
- }
- return stack.peek();
- }
- public static void main(String[] args) {
- int array[] = {3,4,5,1,2};
- int min = minNumberInRotateArray(array);
- System.out.print("min: "+min);
- }
- }