File tree Expand file tree Collapse file tree 5 files changed +119
-21
lines changed
solution/0100-0199/0154.Find Minimum in Rotated Sorted Array II Expand file tree Collapse file tree 5 files changed +119
-21
lines changed Original file line number Diff line number Diff line change 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```
Original file line number Diff line number Diff 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 number Diff line number Diff line change 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+ };
Original file line number Diff line number Diff 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 number Diff line number Diff line change 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+ } ;
You can’t perform that action at this time.
0 commit comments