package swordOffre.gaopengyu; public class MinInRotateArray11 { public static void main(String[] args) { // int[] arr = new int[]{3, 4, 5, 1, 2}; // int[] arr = new int[]{1,2,3,4,5,6,7}; int[] arr = new int[]{3,3,3,0,3,3,3,3,3}; int result = getMin(arr); System.out.println(result); } public static int getMin(int[] arr) { int low = 0; int high = arr.length - 1; int mid = 0; while (arr[low] >= arr[high]) { if (high - low == 1) { mid = high; break; } mid = (low + high) / 2; if (arr[low] == arr[high] && arr[low] == arr[mid]) { mid = getMinInOrder(arr, low, high); break; } else { if (arr[low] >= arr[mid]) { high = mid; } if (arr[high] <= arr[mid]) { low = mid; } } } return arr[mid]; } public static int getMinInOrder(int[] arr, int low, int high) { int min = arr[low]; int result = low; for (int i = low + 1; i <= high; i++) { if (min > arr[i]) { min = arr[i]; result = i; } } return result; } }
旋转数组中的最小数字11
最新推荐文章于 2022-04-15 11:15:24 发布