Skip to main content
Back to problems
#154
Hard Algorithms

Find minimum in rotated sorted array ii

Array Binary Search
44.7% acceptance
Jan 12, 2026
5065
518
Suppose an array of length n sorted in ascending order is rotated between 1 and n times. For example, the array nums = [0,1,4,4,5,6,7] might become: [4,5,6,7,0,1,4] if it was rotated 4 times. [0,1,4,4,5,6,7] if it was rotated 7 times. Notice that rotating an array [a[0], a[1], a[2], ..., a[n-1]] 1 time results in the array [a[n-1], a[0], a[1], a[2], ..., a[n-2]]. Given the sorted rotated array nums that may contain duplicates, return the minimum element of this array. You must decrease the overall operation steps as much as possible.

Solution

Rust
Time O(n log n)
Space O(1)
LeetCode
solution.rs
impl Solution {
  pub fn find_min_ii(nums: Vec<i32>) -> i32 {
    let mut left = 0;
    let mut right = nums.len() - 1;
    
    while left < right {
      let mid = left + (right - left) / 2;
      
      if nums[mid] > nums[right] {
        left = mid + 1;
      } else if nums[mid] < nums[right] {
        right = mid;
      } else {
        right -= 1;
      }
    }
    
    nums[left]
  }
}