Skip to content

Commit 7e1bb67

Browse files
committed
find_minimum_in_rotated_sorted_array_II
1 parent 58f23c3 commit 7e1bb67

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ Golang solution for leetcode. For each problem, there is a simple *_test.go to t
137137
#### [151. reverse words in a string](https://github.com/hitzzc/go-leetcode/tree/master/reverse_words_in_a_string)
138138
#### [152. maximum product subarray](https://github.com/hitzzc/go-leetcode/tree/master/maximum_product_subarray)
139139
#### [153. find minimum in rotated sorted array](https://github.com/hitzzc/go-leetcode/tree/master/find_minimum_in_rotated_sorted_array)
140+
#### [154. find minimum in rotated sorted array II](https://github.com/hitzzc/go-leetcode/tree/master/find_minimum_in_rotated_sorted_array_II)
140141

141142

142143

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package find_minimum_in_rotated_sorted_array_II
2+
3+
func findMin(nums []int) int {
4+
return helper(nums, 0, len(nums)-1)
5+
}
6+
7+
func helper(nums []int, left, right int) int {
8+
if left == right {
9+
return nums[left]
10+
}
11+
if nums[left] < nums[right] {
12+
return nums[left]
13+
}
14+
mid := left + (right-left)/2
15+
if mid == left {
16+
return helper(nums, left+1, right)
17+
}
18+
if nums[left] == nums[mid] && nums[mid] == nums[right] {
19+
for ; left < right && nums[left] == nums[left+1]; left++ {
20+
}
21+
for ; left < right && nums[right] == nums[right-1]; right-- {
22+
}
23+
return helper(nums, left, right)
24+
}
25+
if nums[left] <= nums[mid] && nums[mid] > nums[right] {
26+
return helper(nums, mid+1, right)
27+
}
28+
return helper(nums, left, mid)
29+
}

0 commit comments

Comments
 (0)