[剑指offer]旋转数组的最小数字
思路:
数组实际是两组有序序列,先用两个指针分别指向头和尾,如果左大于右,说明较大的数列在左边,用middle指向中间的值,如果中间值大于left,就将left设为中间值,如果中间值小于right,就将right设为中间值,最后中间值即为最小值
实现:

import java.util.ArrayList;
import java.util.*;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
        if(array.length==0)return 0;
        int left=0;
        int right=array.length-1;
        int middle=-1;
        while(array[left]>=array[right]){
            if(right-left==1){
                middle=right;
                break;
            }
            middle=left+(right-left)/2;
            if(array[middle]>=array[left]){
                left=middle;
            }
            if(array[middle]<=array[right]){
                right=middle;
            }
        }
        return array[middle];
    }
}

相关文章:

  • 2021-05-30
  • 2021-06-16
  • 2022-12-23
  • 2021-12-09
猜你喜欢
  • 2021-07-25
  • 2021-12-09
  • 2022-01-09
  • 2021-10-22
  • 2021-09-30
  • 2021-08-01
  • 2021-09-29
相关资源
相似解决方案