|
@@ -1,9 +1,21 @@
|
|
|
package main
|
|
|
|
|
|
func findMin(nums []int) int {
|
|
|
- return 0
|
|
|
+ beg, end := 0, len(nums)-1
|
|
|
+ for beg < end {
|
|
|
+ mid := beg + (end-beg)/2 // Very important
|
|
|
+ if nums[mid] < nums[end] {
|
|
|
+ end = mid
|
|
|
+ } else if nums[mid] > nums[end] {
|
|
|
+ beg = mid + 1
|
|
|
+ } else {
|
|
|
+ end-- // If equals, cannot decide in which part, so narrow the range
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nums[beg]
|
|
|
}
|
|
|
|
|
|
-func main() {
|
|
|
-
|
|
|
-}
|
|
|
+// func main() {
|
|
|
+// println(findMin([]int{1, 3, 5}), 1)
|
|
|
+// println(findMin([]int{2, 2, 2, 0, 1}), 0)
|
|
|
+// }
|