Find Minimum in Rotated Sorted Array II

LeetCode July - Day 25

Problem Statement

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.

The array may contain duplicates.

Example 1:

Input: [1,3,5]
Output: 1

Example 2:

Input: [2,2,2,0,1]
Output: 0

Note:

This is a follow up problem to Find Minimum in Rotated Sorted Array. Would allow duplicates affect the run-time complexity? How and why?

Inputs, Outputs, Constraints & Exceptions

  • I: number[]
  • O: number
  • C: time complexity < O(n), optimise
  • E: - array of 1 element
    • array of duplicates of the same element
    • array is not ‘rotated’ at all

Code (bruteforce)

function findMin(nums) {
  if(nums.length === 1) return nums[0]
  for(let i = 1; i < nums.length; i++){
    if(nums[i] < nums[i-1]){
      return nums[i]
    }
  }
  return nums[0]
};

Time complexity: O(N)
Space complexity: O(1)

function findMin(nums) {
  /* todo */
};

Time complexity: O(LogN)
Space complexity: O(1)