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

    https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/
    Suppose an array sorted in ascending order 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.

    You may assume no duplicate exists in the array.
    注意,我们要找的最小值,只会在右端,所以如果已经在右端,则挪RIGHT
    如果在左(通过和 NUMS[RIGHT] 比较),则挪LEFT 往右端的深沟走
    time: o(logn) worst o(n)
    space: o(1)

     1 public int findMin(int[] nums) {
     2         if (nums ==null || nums.length ==0) return -1 ;
     3         int left = 0, right = nums.length -1 ;
     4         while(left + 1 < right){
     5             int mid = left + (right - left)/2 ;
     6             if (nums[left] == nums[mid]) {
     7                 left++;
     8             }
     9             if (nums[right] == nums[mid]) {
    10                 right--;
    11             }
    12             //the lower part
    13             if (nums[mid]<nums[right]) {
    14                 right = mid;
    15             }
    16             //the upper part
    17             else if(nums[mid]>nums[right]){
    18                 left = mid ;
    19             }
    20         }
    21         //post processing
    22         return Math.min(nums[left], nums[right]);
    23     }

    注意针对 rotated sorted array 去重复的固定套路

    参考 33,81,153, 154

  • 相关阅读:
    SAP B1的几点不足
    对公司内审员培训的总结
    我们为了什么而活
    ERP实施一周总结
    SAP B1中物料主数据的术语解释
    好像回到了以前
    ERP总结
    WinHex
    Delphi和Windows主题相关的报错
    事件
  • 原文地址:https://www.cnblogs.com/davidnyc/p/8587376.html
Copyright © 2011-2022 走看看