剑指 Offer 11. 旋转数组的最小数字

    科技2025-11-02  7

    LeetCode: 剑指 Offer 11. 旋转数组的最小数字

    本来直接 Arrays.sort(arr) sout>>arr[0] 即可了

    但是这题主要是想让我们来充分利用已有的部分有序来找到最小值

    二分 + 去重直接排序输出遍历 >> 降序即为最小

    二分代码

    去重的时候,不知道重复的是左部分还是右部分,需要 right--

    class Solution { public int minArray(int[] numbers) { int left = 0; int right = numbers.length - 1; while (left <= right){ int mid = left + (right - left) / 2; // left、right 都是靠小的那边走 if(numbers[right] > numbers[mid]){ right = mid ; }else if(numbers[right] < numbers[mid]){ left = mid + 1; } else right--; } return numbers[left]; } }

    >> 解题思路

    Processed: 0.011, SQL: 8