标签:http des mic ret 输出 adf 题目 item bsp
6. 旋转数组的最小数字
暴力搜索
import java.util.ArrayList; public class Solution { public int minNumberInRotateArray(int [] array) { // 从头到尾扫描,记录前一个值大于后一个值的位置 if(array.length <= 0) return 0; for(int j = 0; j < array.length - 1; j++){ if(array[j + 1] < array[j]){ return array[j + 1]; } } return 0; } }
利用二分法的变形
分析:二分查找变种,没有具体的值用来比较。那么用中间值和高低位进行比较,看处于递增还是递减序列,进行操作缩小范围。
1. 处于递增:low上移
2. 处于递减:high下移(如果是high-1
,则可能会错过最小值,因为找的就是最小值)
3. 其余情况:low++缩小范围
特殊情况:
1 import java.util.ArrayList; 2 public class Solution { 3 public int minNumberInRotateArray(int [] array) { 4 // 从头到尾扫描,记录前一个值大于后一个值的位置 5 if(array.length <= 0) 6 return 0; 7 // 变形的二分查找 8 int low = 0, high = array.length - 1; 9 int mid; 10 while(low < high){ 11 mid = (high - low) / 2 + low; 12 if(array[low] < array[high]) 13 return array[low]; 14 if(array[mid] > array[low]){ 15 low = mid + 1; 16 }else if(array[mid] < array[high]){ 17 high = mid; 18 }else{ 19 low++; 20 } 21 } 22 return array[low]; 23 } 24 }
标签:http des mic ret 输出 adf 题目 item bsp
原文地址:https://www.cnblogs.com/hi3254014978/p/12465277.html