Skip to content

Commit 84709ed

Browse files
committed
feat: update leetcode solutions: No.0153. Find Minimum in Rotated Sorted Array
1 parent b82f007 commit 84709ed

File tree

7 files changed

+168
-51
lines changed

7 files changed

+168
-51
lines changed

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

+64-5
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
class Solution:
4242
def findMin(self, nums: List[int]) -> int:
4343
l, r = 0, len(nums) - 1
44+
if nums[l] < nums[r]:
45+
return nums[0]
4446
while l < r:
4547
m = (l + r) >> 1
4648
if nums[m] > nums[r]:
@@ -58,19 +60,76 @@ class Solution:
5860
class Solution {
5961
public int findMin(int[] nums) {
6062
int l = 0, r = nums.length - 1;
63+
// 说明是递增顺序,直接返回第一个元素
64+
if (nums[l] < nums[r]) return nums[0];
6165
while (l < r) {
6266
int m = (l + r) >>> 1;
63-
if (nums[m] > nums[r]) {
64-
l = m + 1;
65-
} else {
66-
r = m;
67-
}
67+
if (nums[m] > nums[r]) l = m + 1;
68+
else r = m;
6869
}
6970
return nums[l];
7071
}
7172
}
7273
```
7374

75+
### **C++**
76+
77+
```cpp
78+
class Solution {
79+
public:
80+
int findMin(vector<int>& nums) {
81+
int l = 0, r = nums.size() - 1;
82+
if (nums[l] < nums[r]) return nums[0];
83+
while (l < r) {
84+
int m = (l + r) >> 1;
85+
if (nums[m] > nums[r]) l = m + 1;
86+
else r = m;
87+
}
88+
return nums[l];
89+
}
90+
};
91+
```
92+
93+
### **Go**
94+
95+
```go
96+
func findMin(nums []int) int {
97+
l, r := 0, len(nums) - 1
98+
if nums[l] < nums[r] {
99+
return nums[0]
100+
}
101+
for l < r {
102+
m := (l + r) >> 1
103+
if nums[m] > nums[r] {
104+
l = m + 1
105+
} else {
106+
r = m
107+
}
108+
}
109+
return nums[l]
110+
}
111+
```
112+
113+
### **JavaScript**
114+
115+
```js
116+
/**
117+
* @param {number[]} nums
118+
* @return {number}
119+
*/
120+
var findMin = function (nums) {
121+
let l = 0,
122+
r = nums.length - 1;
123+
if (nums[l] < nums[r]) return nums[0];
124+
while (l < r) {
125+
const m = (l + r) >> 1;
126+
if (nums[m] > nums[r]) l = m + 1;
127+
else r = m;
128+
}
129+
return nums[l];
130+
};
131+
```
132+
74133
### **...**
75134

76135
```

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

+63-5
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
class Solution:
4343
def findMin(self, nums: List[int]) -> int:
4444
l, r = 0, len(nums) - 1
45+
if nums[l] < nums[r]:
46+
return nums[0]
4547
while l < r:
4648
m = (l + r) >> 1
4749
if nums[m] > nums[r]:
@@ -57,19 +59,75 @@ class Solution:
5759
class Solution {
5860
public int findMin(int[] nums) {
5961
int l = 0, r = nums.length - 1;
62+
if (nums[l] < nums[r]) return nums[0];
6063
while (l < r) {
6164
int m = (l + r) >>> 1;
62-
if (nums[m] > nums[r]) {
63-
l = m + 1;
64-
} else {
65-
r = m;
66-
}
65+
if (nums[m] > nums[r]) l = m + 1;
66+
else r = m;
6767
}
6868
return nums[l];
6969
}
7070
}
7171
```
7272

73+
### **C++**
74+
75+
```cpp
76+
class Solution {
77+
public:
78+
int findMin(vector<int>& nums) {
79+
int l = 0, r = nums.size() - 1;
80+
if (nums[l] < nums[r]) return nums[0];
81+
while (l < r) {
82+
int m = (l + r) >> 1;
83+
if (nums[m] > nums[r]) l = m + 1;
84+
else r = m;
85+
}
86+
return nums[l];
87+
}
88+
};
89+
```
90+
91+
### **Go**
92+
93+
```go
94+
func findMin(nums []int) int {
95+
l, r := 0, len(nums) - 1
96+
if nums[l] < nums[r] {
97+
return nums[0]
98+
}
99+
for l < r {
100+
m := (l + r) >> 1
101+
if nums[m] > nums[r] {
102+
l = m + 1
103+
} else {
104+
r = m
105+
}
106+
}
107+
return nums[l]
108+
}
109+
```
110+
111+
### **JavaScript**
112+
113+
```js
114+
/**
115+
* @param {number[]} nums
116+
* @return {number}
117+
*/
118+
var findMin = function (nums) {
119+
let l = 0,
120+
r = nums.length - 1;
121+
if (nums[l] < nums[r]) return nums[0];
122+
while (l < r) {
123+
const m = (l + r) >> 1;
124+
if (nums[m] > nums[r]) l = m + 1;
125+
else r = m;
126+
}
127+
return nums[l];
128+
};
129+
```
130+
73131
### **...**
74132

75133
```
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
11
class Solution {
22
public:
33
int findMin(vector<int>& nums) {
4-
if (nums[0] <= nums.back())
5-
return nums[0] ;
6-
7-
int l = 0, r = nums.size() - 1 ;
8-
9-
while (l+1 < r)
10-
{
11-
const int mid = l + ((r-l) >> 1) ;
12-
if (nums[l] <= nums[mid])
13-
l = mid ;
14-
else
15-
r = mid ;
4+
int l = 0, r = nums.size() - 1;
5+
if (nums[l] < nums[r]) return nums[0];
6+
while (l < r) {
7+
int m = (l + r) >> 1;
8+
if (nums[m] > nums[r]) l = m + 1;
9+
else r = m;
1610
}
17-
18-
return nums.at(r) ;
11+
return nums[l];
1912
}
20-
};
13+
};
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,15 @@
1-
/**
2-
* @lc app=leetcode.cn id=153 lang=golang
3-
* Accepted
4-
* 146/146 cases passed (4 ms)
5-
* Your runtime beats 93 % of golang submissions
6-
* Your memory usage beats 40.91 % of golang submissions (2.6 MB)
7-
*/
81
func findMin(nums []int) int {
9-
l, m, r := 0, 0, len(nums)-1
10-
for l < r {
11-
if nums[l] <= nums[r] {
12-
return nums[l]
13-
}
14-
m = (r + l) / 2
15-
if nums[l] <= nums[m] {
16-
l = m + 1
17-
} else {
18-
r = m
19-
}
20-
21-
}
22-
return nums[l]
2+
l, r := 0, len(nums) - 1
3+
if nums[l] < nums[r] {
4+
return nums[0]
5+
}
6+
for l < r {
7+
m := (l + r) >> 1
8+
if nums[m] > nums[r] {
9+
l = m + 1
10+
} else {
11+
r = m
12+
}
13+
}
14+
return nums[l]
2315
}

solution/0100-0199/0153.Find Minimum in Rotated Sorted Array/Solution.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
class Solution {
22
public int findMin(int[] nums) {
33
int l = 0, r = nums.length - 1;
4+
if (nums[l] < nums[r]) return nums[0];
45
while (l < r) {
56
int m = (l + r) >>> 1;
6-
if (nums[m] > nums[r]) {
7-
l = m + 1;
8-
} else {
9-
r = m;
10-
}
7+
if (nums[m] > nums[r]) l = m + 1;
8+
else r = m;
119
}
1210
return nums[l];
1311
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var findMin = function (nums) {
6+
let l = 0,
7+
r = nums.length - 1;
8+
if (nums[l] < nums[r]) return nums[0];
9+
while (l < r) {
10+
const m = (l + r) >> 1;
11+
if (nums[m] > nums[r]) l = m + 1;
12+
else r = m;
13+
}
14+
return nums[l];
15+
};

solution/0100-0199/0153.Find Minimum in Rotated Sorted Array/Solution.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
class Solution:
22
def findMin(self, nums: List[int]) -> int:
33
l, r = 0, len(nums) - 1
4+
if nums[l] < nums[r]:
5+
return nums[0]
46
while l < r:
57
m = (l + r) >> 1
68
if nums[m] > nums[r]:

0 commit comments

Comments
 (0)