本文共 1063 字,大约阅读时间需要 3 分钟。
题目
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 知识点 数组、二分查找 思路 最开始看这道题时纠结了很久题意,没懂考的点是什么,后来看了题解才知道,可以用暴力做出来,也可以根据题目给的规律用二分查找法做出来。 方一、暴力解出 方二、利用二分查找以及题目特性,已知旋转后可分为两个非递减数组;代码
import java.util.ArrayList;public class Solution { public int minNumberInRotateArray(int [] array) { if(array.length<=0){ return 0; } int min = 999999999; for(int i=0;i
import java.util.ArrayList;public class Solution { public int minNumberInRotateArray(int[] array) { int i = 0, j = array.length - 1; while (i < j) { if (array[i] < array[j]) { return array[i]; } int mid = (i + j) >> 1; if (array[mid] > array[i]) { i = mid + 1; } else if (array[mid] < array[j]) { j = mid; } else i++; // 巧妙避免了offer书上说的坑点(1 0 1 1 1) } return array[i]; }}
转载地址:http://cffef.baihongyu.com/