File tree Expand file tree Collapse file tree 2 files changed +46
-0
lines changed
153_FindMinimumInRotatedSortedArray
154_FindMinimumInRotatedSortedArray2 Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int findMin (vector<int >& nums) {
4
+ int len = nums.size ();
5
+ if (len == 0 ) return 0 ;
6
+ if (len == 1 ) return nums[0 ];
7
+ if (len == 2 ) return min (nums[0 ], nums[1 ]);
8
+ if (nums[0 ] < nums[len-1 ]) return nums[0 ];
9
+ int mid = (len-1 ) / 2 ;
10
+ if (nums[0 ] < nums[mid]) {
11
+ vector<int > temp (nums.begin ()+mid, nums.end ());
12
+ return findMin (temp);
13
+ }
14
+ vector<int > temp (nums.begin (), nums.begin ()+mid+1 );
15
+ return findMin (temp);
16
+ }
17
+ };
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int findMin (vector<int >& nums) {
4
+ int len = nums.size ();
5
+ if (len == 0 ) return 0 ;
6
+ if (len == 1 ) return nums[0 ];
7
+ if (len == 2 ) return min (nums[0 ], nums[1 ]);
8
+ if (nums[0 ] < nums[len-1 ]) return nums[0 ];
9
+ int mid = (len-1 ) / 2 ;
10
+ if (nums[0 ] > nums[len-1 ]) {
11
+ if (nums[0 ] <= nums[mid]) {
12
+ vector<int > temp (nums.begin ()+mid, nums.end ());
13
+ return findMin (temp);
14
+ }
15
+ vector<int > temp (nums.begin (), nums.begin ()+mid+1 );
16
+ return findMin (temp);
17
+ }
18
+ if (nums[0 ] < nums[mid]) {
19
+ vector<int > temp (nums.begin ()+mid, nums.end ());
20
+ return findMin (temp);
21
+ } else if (nums[0 ] > nums[mid]) {
22
+ vector<int > temp (nums.begin (), nums.begin ()+mid+1 );
23
+ return findMin (temp);
24
+ }
25
+ vector<int > temp (nums.begin ()+mid, nums.end ());
26
+ vector<int > temp1 (nums.begin (), nums.begin ()+mid+1 );
27
+ return min (findMin (temp), findMin (temp1));
28
+ }
29
+ };
You can’t perform that action at this time.
0 commit comments