CODE

FIND MINIMUM IN ROTATED SORTED ARRAY

Binary Search

public class Solution {
  public int FindMin(int[] nums) {
    if (nums.Length == 1)
      return nums[0];
    if (nums.Length == 2 && nums[0] < nums[1])
      return nums[0];
    else if (nums.Length == 2 && nums[1] < nums[0]) return nums[1];
    return binarySearch(nums, 0, nums.Length-1);
  }

  int binarySearch(int[] nums, int s, int e)
  {
    int mp = s + (e - s)/2;
    if (nums[0] < nums[mp] && nums[mp] < nums[e])
      return nums[0];
    if (nums[0] > nums[mp] && nums[mp] < nums[e] && nums[mp-1] > nums[mp])
      return nums[mp];
    if (nums[0] < nums[mp] && nums[mp] > nums[e] && nums[mp+1] < nums[mp] )
      return nums[mp+1];
    if (nums[0] > nums[mp] && nums[mp] < nums[e])
      return binarySearch(nums, 0, mp);
    if (nums[0] < nums[mp] && nums[mp] > nums[e])
      return binarySearch(nums, mp, nums.Length-1);
    return -1;
  }
}						
					
31
© 2025 Dallas Scott