0
点赞
收藏
分享

微信扫一扫

力扣刷题记录_剑指offer

TiaNa_na 2022-03-20 阅读 67

剑指offer

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

//1.时间复杂度O(n)
    public int minArray(int[] numbers) {
        if(numbers == null || numbers.length == 0) return -1;

        for(int i = 0;i < numbers.length - 1;i ++){
            if(numbers[i] > numbers[i + 1]){
                return numbers[i + 1];
            }
        }

        return numbers[0];
    }
//2.二分法查找
    /**
     * 整个数组必然可以分为左排序数组和右排序数组,并且左排序数组中
     * 的每个数一定大于右排序数组的每个数
     * @param numbers
     * @return
     */
    public int minArray2(int[] numbers) {
        int left = 0,right = numbers.length - 1;
        //这里改成left<=right也是可以的
        while(left < right){
            int mid = left + (right - left) / 2;
            if(numbers[mid] > numbers[right]){
                left = mid + 1;
            }else if(numbers[mid] < numbers[right]){
                right = mid;
            }else{
                //如果发现中间值和右边值相等,右边范围缩小1
                right = right - 1;
            }
        }

        return numbers[left];
    }
举报

相关推荐

剑指offer刷题记录

剑指Offer刷题记录_Day17

力扣剑指offer

剑指Offer做题记录

力扣刷题记录

3.29力扣刷题记录

4.4力扣刷题记录

0 条评论