From 221cf3fe5f0e02c0765e4c6684b691e95ee41fe8 Mon Sep 17 00:00:00 2001 From: Tausiq Samantaray Date: Fri, 11 Aug 2023 22:21:13 +0530 Subject: [PATCH] Time: 0 ms (100.00%), Space: 42.9 MB (84.20%) - LeetHub --- ...nd-minimum-in-rotated-sorted-array-ii.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 0154-find-minimum-in-rotated-sorted-array-ii/0154-find-minimum-in-rotated-sorted-array-ii.java diff --git a/0154-find-minimum-in-rotated-sorted-array-ii/0154-find-minimum-in-rotated-sorted-array-ii.java b/0154-find-minimum-in-rotated-sorted-array-ii/0154-find-minimum-in-rotated-sorted-array-ii.java new file mode 100644 index 0000000..7859c37 --- /dev/null +++ b/0154-find-minimum-in-rotated-sorted-array-ii/0154-find-minimum-in-rotated-sorted-array-ii.java @@ -0,0 +1,41 @@ +class Solution { + public int findMin(int[] nums) { + // 4 cases + // 1st: left of pivot + // 2nd: right of target + // 3rd: target + // 4th: pivot + int start = 0; + int end = nums.length-1; + // int tempstart = start; + // int tempend = end; + while(start < end){ + int mid = start + (end - start) /2; + int b = mid-1; + int a = mid +1; + b = b < 0? mid:b; + a = a > nums.length-1? mid: a; + + + if (nums[a] < nums[mid]){ + return nums[a]; + } + else if(nums[b] > nums[mid]){ + return nums[mid]; + } + else if(nums[mid] == nums[start] && nums[mid] == nums[end]){ + start++; + end--; + + } + else if(nums[mid] >= nums[start] && !(nums[start] < nums[end])){ + start = mid + 1; + } + else{ + end = mid -1; + } + } + return nums[start]; + + } +} \ No newline at end of file