Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit d2a1625

Browse files
solves find min in rotated array
1 parent 3acdff1 commit d2a1625

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@
136136
| 150 | [Evaluate Reverse Polish Notation](https://leetcode.com/problems/evaluate-reverse-polish-notation) | [![Java](assets/java.png)](src/EvaluateReversePolishNotation.java) | |
137137
| 151 | [Reverse Words in a String](https://leetcode.com/problems/reverse-words-in-a-string) | [![Java](assets/java.png)](src/ReverseWordsInAString.java) | |
138138
| 152 | [Maximum Product Subarray](https://leetcode.com/problems/maximum-product-subarray) | [![Java](assets/java.png)](src/MaximumProductSubarray.java) | |
139-
| 153 | [Find Minimum in Rotated Sorted Array](https://leetcode.com/problems/find-minimum-in-rotated-sorted-array) | | |
139+
| 153 | [Find Minimum in Rotated Sorted Array](https://leetcode.com/problems/find-minimum-in-rotated-sorted-array) | [![Java](assets/java.png)](src/FindMinimumInRotatedSortedArray.java) | |
140140
| 155 | [Min Stack](https://leetcode.com/problems/min-stack) | [![Java](assets/java.png)](src/MinStack.java) [![Python](assets/python.png)](python/min_stack.py) | |
141141
| 156 | 🔒 [Binary Tree Upside Down](https://leetcode.com/problems/binary-tree-upside-down) | | |
142142
| 157 | [Read N Characters Given Read4](https://leetcode.com/problems/read-n-characters-given-read4) | | |
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// https://leetcode.com/problems/find-minimum-in-rotated-sorted-array
2+
// T: O(log(N))
3+
// T: O(1)
4+
5+
public class FindMinimumInRotatedSortedArray {
6+
public int findMin(int[] array) {
7+
if (!isRotated(array)) return array[0];
8+
9+
for (int left = 0, right = array.length - 1 ; left <= right ; ) {
10+
int middle = left + (right - left) / 2;
11+
if (array[middle] > array[middle + 1]) return array[middle + 1];
12+
if (array[middle] < array[middle - 1]) return array[middle];
13+
14+
if (array[middle] < array[array.length - 1]) right = middle - 1;
15+
else left = middle + 1;
16+
}
17+
return -1;
18+
}
19+
20+
private boolean isRotated(int[] array) {
21+
return array[0] > array[array.length - 1];
22+
}
23+
}

0 commit comments

Comments
 (0)