Skip to content

Commit 46d0e8f

Browse files
committed
feat: add python and java solutions to leetcode problem: No.0153
See https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/
1 parent 4097b8e commit 46d0e8f

File tree

4 files changed

+67
-55
lines changed

4 files changed

+67
-55
lines changed

solution/0100-0199/0153.Find Minimum in Rotated Sorted Array/README.md

+28-2
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,48 @@
2727

2828
<!-- 这里可写通用的实现逻辑 -->
2929

30+
二分查找。
31+
32+
`nums[m] > nums[r]`,说明最小值在 m 的右边,否则说明最小值在 m 的左边(包括 m)。
33+
3034
<!-- tabs:start -->
3135

3236
### **Python3**
3337

3438
<!-- 这里可写当前语言的特殊实现逻辑 -->
3539

3640
```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]
3851
```
3952

4053
### **Java**
4154

4255
<!-- 这里可写当前语言的特殊实现逻辑 -->
4356

4457
```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+
}
4672
```
4773

4874
### **...**

solution/0100-0199/0153.Find Minimum in Rotated Sorted Array/README_EN.md

+24-2
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,35 @@
3939
### **Python3**
4040

4141
```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]
4352
```
4453

4554
### **Java**
4655

4756
```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+
}
4971
```
5072

5173
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,14 @@
11
class Solution {
22
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;
208
} else {
21-
p = mid + 1;
9+
r = m;
2210
}
23-
24-
mid = p + ((q - p) >> 1);
2511
}
26-
27-
return nums[p];
28-
12+
return nums[l];
2913
}
3014
}
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,10 @@
11
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
278
else:
28-
l=m+1
29-
m=(l+r)//2
30-
return nums[l]
9+
r = m
10+
return nums[l]

0 commit comments

Comments
 (0)