一、题目内容

image.png

二、题解

解法1:

思路

找到第一个不符合排序的小数

代码

  1. class Solution {
  2. public int minArray(int[] numbers) {
  3. int pre = numbers[0];
  4. int first = pre;
  5. for(int i = 0; i<numbers.length; i++){
  6. if(numbers[i]<pre){
  7. return numbers[i];
  8. }else{
  9. pre = numbers[i];
  10. }
  11. }
  12. return pre<first?pre:first;
  13. }
  14. }

解法2:

思路

二分查找

代码

  1. class Solution {
  2. public int minArray(int[] numbers) {
  3. if (numbers.length == 1) {
  4. return numbers[0];
  5. }
  6. int left = 0;
  7. int right = numbers.length - 1;
  8. while (left < right) {
  9. int mid = left + (right - left) / 2;
  10. if (numbers[mid] > numbers[right]) {
  11. left = mid+1;
  12. } else if (numbers[left] > numbers[mid]) {
  13. right = mid;
  14. } else {
  15. //相等时,忽略一位
  16. right--;
  17. }
  18. }
  19. return numbers[left];
  20. }
  21. }