File tree 4 files changed +67
-55
lines changed
solution/0100-0199/0153.Find Minimum in Rotated Sorted Array
4 files changed +67
-55
lines changed Original file line number Diff line number Diff line change 27
27
28
28
<!-- 这里可写通用的实现逻辑 -->
29
29
30
+ 二分查找。
31
+
32
+ 若 ` nums[m] > nums[r] ` ,说明最小值在 m 的右边,否则说明最小值在 m 的左边(包括 m)。
33
+
30
34
<!-- tabs:start -->
31
35
32
36
### ** Python3**
33
37
34
38
<!-- 这里可写当前语言的特殊实现逻辑 -->
35
39
36
40
``` python
37
-
41
+ class Solution :
42
+ def findMin (self , nums : List[int ]) -> int :
43
+ l, r = 0 , len (nums) - 1
44
+ while l < r:
45
+ m = l + ((r - l) >> 1 )
46
+ if nums[m] > nums[r]:
47
+ l = m + 1
48
+ else :
49
+ r = m
50
+ return nums[l]
38
51
```
39
52
40
53
### ** Java**
41
54
42
55
<!-- 这里可写当前语言的特殊实现逻辑 -->
43
56
44
57
``` java
45
-
58
+ class Solution {
59
+ public int findMin (int [] nums ) {
60
+ int l = 0 , r = nums. length - 1 ;
61
+ while (l < r) {
62
+ int m = l + ((r - l) >> 1 );
63
+ if (nums[m] > nums[r]) {
64
+ l = m + 1 ;
65
+ } else {
66
+ r = m;
67
+ }
68
+ }
69
+ return nums[l];
70
+ }
71
+ }
46
72
```
47
73
48
74
### ** ...**
Original file line number Diff line number Diff line change 39
39
### ** Python3**
40
40
41
41
``` python
42
-
42
+ class Solution :
43
+ def findMin (self , nums : List[int ]) -> int :
44
+ l, r = 0 , len (nums) - 1
45
+ while l < r:
46
+ m = l + ((r - l) >> 1 )
47
+ if nums[m] > nums[r]:
48
+ l = m + 1
49
+ else :
50
+ r = m
51
+ return nums[l]
43
52
```
44
53
45
54
### ** Java**
46
55
47
56
``` java
48
-
57
+ class Solution {
58
+ public int findMin (int [] nums ) {
59
+ int l = 0 , r = nums. length - 1 ;
60
+ while (l < r) {
61
+ int m = l + ((r - l) >> 1 );
62
+ if (nums[m] > nums[r]) {
63
+ l = m + 1 ;
64
+ } else {
65
+ r = m;
66
+ }
67
+ }
68
+ return nums[l];
69
+ }
70
+ }
49
71
```
50
72
51
73
### ** ...**
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public int findMin (int [] nums ) {
3
- int n = nums .length ;
4
- if (n == 1 ) {
5
- return nums [0 ];
6
- }
7
-
8
- int p = 0 ;
9
- int q = n - 1 ;
10
-
11
- int mid = p + ((q - p ) >> 1 );
12
-
13
- while (p < q ) {
14
- if (nums [p ] <= nums [q ]) {
15
- break ;
16
- }
17
-
18
- if (nums [p ] > nums [mid ]) {
19
- q = mid ;
3
+ int l = 0 , r = nums .length - 1 ;
4
+ while (l < r ) {
5
+ int m = l + ((r - l ) >> 1 );
6
+ if (nums [m ] > nums [r ]) {
7
+ l = m + 1 ;
20
8
} else {
21
- p = mid + 1 ;
9
+ r = m ;
22
10
}
23
-
24
- mid = p + ((q - p ) >> 1 );
25
11
}
26
-
27
- return nums [p ];
28
-
12
+ return nums [l ];
29
13
}
30
14
}
Original file line number Diff line number Diff line change 1
1
class Solution :
2
- def findMin (self , nums ):
3
- """
4
- :type nums: List[int]
5
- :rtype: int
6
- """
7
- return min (nums )
8
-
9
- class Solution :
10
- def findMin (self , nums ):
11
- """
12
- :type nums: List[int]
13
- :rtype: int
14
- """
15
- length = len (nums )
16
- if length == 1 :
17
- return nums [0 ]
18
- l = 0
19
- r = length - 1
20
- m = r // 2
21
-
22
- while l < r :
23
- if nums [l ]<= nums [r ]:
24
- break
25
- if nums [l ]> nums [m ]:
26
- r = m
2
+ def findMin (self , nums : List [int ]) -> int :
3
+ l , r = 0 , len (nums ) - 1
4
+ while l < r :
5
+ m = l + ((r - l ) >> 1 )
6
+ if nums [m ] > nums [r ]:
7
+ l = m + 1
27
8
else :
28
- l = m + 1
29
- m = (l + r )// 2
30
- return nums [l ]
9
+ r = m
10
+ return nums [l ]
You can’t perform that action at this time.
0 commit comments