Skip to content

Commit 381e8c1

Browse files
committed
feat: update leetcode solutions: No.0154. Find Minimum in Rotated Sorted Array II
1 parent 84709ed commit 381e8c1

File tree

5 files changed

+119
-21
lines changed

5 files changed

+119
-21
lines changed

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

+47-7
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@
3434

3535
<!-- 这里可写通用的实现逻辑 -->
3636

37+
二分法。
38+
39+
`nums[m] > nums[r]`,说明最小值在 m 的右边;若 `nums[m] < nums[r]`,说明最小值在 m 的左边(包括 m);若相等,无法判断,直接将 r 减 1。循环比较。
40+
41+
最后返回 `nums[l]` 即可。
42+
3743
<!-- tabs:start -->
3844

3945
### **Python3**
@@ -65,19 +71,53 @@ class Solution {
6571
int l = 0, r = nums.length - 1;
6672
while (l < r) {
6773
int m = (l + r) >>> 1;
68-
if (nums[m] > nums[r]) {
69-
l = m + 1;
70-
} else if (nums[m] < nums[r]) {
71-
r = m;
72-
} else {
73-
--r;
74-
}
74+
if (nums[m] > nums[r]) l = m + 1;
75+
else if (nums[m] < nums[r]) r = m;
76+
else --r;
7577
}
7678
return nums[l];
7779
}
7880
}
7981
```
8082

83+
### **C++**
84+
85+
```cpp
86+
class Solution {
87+
public:
88+
int findMin(vector<int>& nums) {
89+
int l = 0, r = nums.size() - 1;
90+
while (l < r) {
91+
int m = (l + r) >> 1;
92+
if (nums[m] > nums[r]) l = m + 1;
93+
else if (nums[m] < nums[r]) r = m;
94+
else --r;
95+
}
96+
return nums[l];
97+
}
98+
};
99+
```
100+
101+
### **JavaScript**
102+
103+
```js
104+
/**
105+
* @param {number[]} nums
106+
* @return {number}
107+
*/
108+
var findMin = function (nums) {
109+
let l = 0,
110+
r = nums.length - 1;
111+
while (l < r) {
112+
const m = (l + r) >> 1;
113+
if (nums[m] > nums[r]) l = m + 1;
114+
else if (nums[m] < nums[r]) r = m;
115+
else --r;
116+
}
117+
return nums[l];
118+
};
119+
```
120+
81121
### **...**
82122

83123
```

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

+41-7
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,53 @@ class Solution {
6464
int l = 0, r = nums.length - 1;
6565
while (l < r) {
6666
int m = (l + r) >>> 1;
67-
if (nums[m] > nums[r]) {
68-
l = m + 1;
69-
} else if (nums[m] < nums[r]) {
70-
r = m;
71-
} else {
72-
--r;
73-
}
67+
if (nums[m] > nums[r]) l = m + 1;
68+
else if (nums[m] < nums[r]) r = m;
69+
else --r;
7470
}
7571
return nums[l];
7672
}
7773
}
7874
```
7975

76+
### **C++**
77+
78+
```cpp
79+
class Solution {
80+
public:
81+
int findMin(vector<int>& nums) {
82+
int l = 0, r = nums.size() - 1;
83+
while (l < r) {
84+
int m = (l + r) >> 1;
85+
if (nums[m] > nums[r]) l = m + 1;
86+
else if (nums[m] < nums[r]) r = m;
87+
else --r;
88+
}
89+
return nums[l];
90+
}
91+
};
92+
```
93+
94+
### **JavaScript**
95+
96+
```js
97+
/**
98+
* @param {number[]} nums
99+
* @return {number}
100+
*/
101+
var findMin = function (nums) {
102+
let l = 0,
103+
r = nums.length - 1;
104+
while (l < r) {
105+
const m = (l + r) >> 1;
106+
if (nums[m] > nums[r]) l = m + 1;
107+
else if (nums[m] < nums[r]) r = m;
108+
else --r;
109+
}
110+
return nums[l];
111+
};
112+
```
113+
80114
### **...**
81115

82116
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
int findMin(vector<int>& nums) {
4+
int l = 0, r = nums.size() - 1;
5+
while (l < r) {
6+
int m = (l + r) >> 1;
7+
if (nums[m] > nums[r]) l = m + 1;
8+
else if (nums[m] < nums[r]) r = m;
9+
else --r;
10+
}
11+
return nums[l];
12+
}
13+
};

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

+3-7
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,9 @@ public int findMin(int[] nums) {
33
int l = 0, r = nums.length - 1;
44
while (l < r) {
55
int m = (l + r) >>> 1;
6-
if (nums[m] > nums[r]) {
7-
l = m + 1;
8-
} else if (nums[m] < nums[r]) {
9-
r = m;
10-
} else {
11-
--r;
12-
}
6+
if (nums[m] > nums[r]) l = m + 1;
7+
else if (nums[m] < nums[r]) r = m;
8+
else --r;
139
}
1410
return nums[l];
1511
}
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+
while (l < r) {
9+
const m = (l + r) >> 1;
10+
if (nums[m] > nums[r]) l = m + 1;
11+
else if (nums[m] < nums[r]) r = m;
12+
else --r;
13+
}
14+
return nums[l];
15+
};

0 commit comments

Comments
 (0)