Skip to content
This repository was archived by the owner on Sep 20, 2023. It is now read-only.

Commit 715ea79

Browse files
committed
33 独立了查找最小值的函数
1 parent 492f693 commit 715ea79

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

Algorithms/0033.search-in-rotated-sorted-array/search-in-rotated-sorted-array.go

+17-15
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,9 @@ package problem0033
22

33
func search(nums []int, target int) int {
44
size := len(nums)
5-
65
left, right := 0, size-1
7-
for left < right {
8-
mid := (left + right) / 2
9-
if nums[mid] > nums[right] {
10-
left = mid + 1
11-
} else {
12-
right = mid
13-
}
14-
}
15-
16-
/* lo = hi,是最小值的索引值 */
17-
18-
rotated := left /* 数组旋转了的距离 */
19-
20-
left, right = 0, size-1
6+
/* 数组旋转了的距离 */
7+
rotated := indexOfMin(nums)
218

229
for left <= right {
2310
mid := (left + right) / 2
@@ -35,3 +22,18 @@ func search(nums []int, target int) int {
3522

3623
return -1
3724
}
25+
26+
/* nums 是被旋转了的递增数组 */
27+
func indexOfMin(nums []int) int {
28+
size := len(nums)
29+
left, right := 0, size-1
30+
for left < right {
31+
mid := (left + right) / 2
32+
if nums[mid] > nums[right] {
33+
left = mid + 1
34+
} else {
35+
right = mid
36+
}
37+
}
38+
return left
39+
}

Algorithms/0033.search-in-rotated-sorted-array/search-in-rotated-sorted-array_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,16 @@ func Test_Problem0033(t *testing.T) {
8080
ast.Equal(a.one, search(p.one, p.two), "输入:%v", p)
8181
}
8282
}
83+
84+
func Test_indexOfMin(t *testing.T) {
85+
ast := assert.New(t)
86+
87+
array := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
88+
89+
for i := 0; i < 10; i++ {
90+
nums := array[i : i+10]
91+
actual := 9 - i
92+
expected := indexOfMin(nums)
93+
ast.Equal(expected, actual)
94+
}
95+
}

0 commit comments

Comments
 (0)