zoukankan      html  css  js  c++  java
  • Find Minimum in Rotated Sorted Array II

    Find Minimum in Rotated Sorted Array II

    问题:

    Follow up for "Find Minimum in Rotated Sorted Array":
    What if duplicates are allowed?

    Would this affect the run-time complexity? How and why?

    Suppose a sorted array is rotated at some pivot unknown to you beforehand.

    (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

    Find the minimum element.

    The array may contain duplicates.

    思路:

      二分查找

    我的代码:

    public class Solution {
        public int findMin(int[] num) {
            if(num == null || num.length == 0) return Integer.MAX_VALUE;
            int left = 0;
            int right = num.length - 1;
            while(left + 1 < right)
            {
                if(num[left] < num[right])  return num[left];
                int mid = (left + right)/2;
                if(num[mid] > num[right])
                {
                    left = mid + 1;
                }
                else if(num[mid] < num[right])
                {
                    right = mid;
                }
                else
                {
                    right--;
                }
            }
            if(num[left] > num[right])  return num[right];
            else return num[left];
        }
    }
    View Code

    学习之处:

    • 今天连续做了四道二分查找的问题,easy medium,hard都有,对二分查找理解更加深刻了,想的多,写出来,总结出来才是理解问题的王道,随性的写代码往往建立不起一整套的体系。
    • 对于Find Minimum此类题目,由于某些情况下left = mid or right = mid 所以为了防止死循环 需要while(left + 1 < right)
    • 对于Search问题 while(left <= right) 即可遍历到所有的数据
    • 对于Rotated问题,怎么rotated都可以用通过判断A[left] A[mid] A[right]三者数据的大小,判断左部分还是右部分,哪边是有序的。
    • 对于含有Duplicate数据的问题,A[left] < A[mid] 肯定可以确定left --> mid是升序的,对于A[left] == A[mid]便无法判断了,所以此时需要Left++ 排除一些元素,但是这样以来,也就增加了时间复杂度。
  • 相关阅读:
    /usr/bin/ld: 找不到 /usr/lib64/libatomic.so.1.0.0
    linux Version mismatch error. This is libtool 2.4.6 Debian-2.4.6-2
    java播放语音文件
    java冒泡排序
    java递归求和
    常见芯片标号说明
    keil5 新建 stm32项目 步骤
    st-link 升级固件时报错“is not in the DFU mode”
    数码管 段选位选
    C51 定时器
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4321819.html
Copyright © 2011-2022 走看看