File tree 6 files changed +75
-186
lines changed
0033.Search in Rotated Sorted Array
0081.Search in Rotated Sorted Array II
6 files changed +75
-186
lines changed Original file line number Diff line number Diff line change @@ -91,31 +91,16 @@ class Solution {
91
91
class Solution {
92
92
public:
93
93
int search(vector<int >& nums, int target) {
94
- if(nums.size() < 1) {
95
- return -1;
96
- }
97
- if(nums.size() == 1) {
98
- return nums[ 0] == target ? 0 : -1;
99
- }
100
- int n = nums.size();
101
- int l = 0, r = n - 1;
102
- while(l <= r) {
103
- int mid = (l + r) / 2;
104
- if(nums[ mid] == target) {
105
- return mid;
106
- }
107
- if(nums[ l] <= nums[ mid] ) {
108
- if(nums[ l] <= target && target < nums[ mid] ) {
109
- r = mid - 1;
110
- }else {
111
- l = mid + 1;
112
- }
113
- }else {
114
- if(nums[ mid] < target && target <= nums[ r] ) {
115
- l = mid + 1;
116
- }else {
117
- r = mid - 1;
118
- }
94
+ int l = 0, r = nums.size() - 1;
95
+ while (l <= r) {
96
+ int mid = (l + r) >> 1;
97
+ if (nums[ mid] == target) return mid;
98
+ if (nums[ mid] > target) {
99
+ if (nums[ mid] >= nums[ r] && target < nums[ l] ) l = mid + 1;
100
+ else r = mid - 1;
101
+ } else {
102
+ if (nums[ mid] <= nums[ l] && target > nums[ r] ) r = mid - 1;
103
+ else l = mid + 1;
119
104
}
120
105
}
121
106
return -1;
Original file line number Diff line number Diff line change @@ -89,31 +89,16 @@ class Solution {
89
89
class Solution {
90
90
public:
91
91
int search(vector<int >& nums, int target) {
92
- if(nums.size() < 1) {
93
- return -1;
94
- }
95
- if(nums.size() == 1) {
96
- return nums[ 0] == target ? 0 : -1;
97
- }
98
- int n = nums.size();
99
- int l = 0, r = n - 1;
100
- while(l <= r) {
101
- int mid = (l + r) / 2;
102
- if(nums[ mid] == target) {
103
- return mid;
104
- }
105
- if(nums[ l] <= nums[ mid] ) {
106
- if(nums[ l] <= target && target < nums[ mid] ) {
107
- r = mid - 1;
108
- }else {
109
- l = mid + 1;
110
- }
111
- }else {
112
- if(nums[ mid] < target && target <= nums[ r] ) {
113
- l = mid + 1;
114
- }else {
115
- r = mid - 1;
116
- }
92
+ int l = 0, r = nums.size() - 1;
93
+ while (l <= r) {
94
+ int mid = (l + r) >> 1;
95
+ if (nums[ mid] == target) return mid;
96
+ if (nums[ mid] > target) {
97
+ if (nums[ mid] >= nums[ r] && target < nums[ l] ) l = mid + 1;
98
+ else r = mid - 1;
99
+ } else {
100
+ if (nums[ mid] <= nums[ l] && target > nums[ r] ) r = mid - 1;
101
+ else l = mid + 1;
117
102
}
118
103
}
119
104
return -1;
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public:
3
3
int search (vector<int >& nums, int target) {
4
- int len = nums.size ();
5
- int left = 0 ;
6
- int right = len - 1 ;
7
- int mid;
8
- while (left <= right) {
9
- mid = (left + right) / 2 ;
10
- if (nums[mid] == target)return mid;
11
-
12
- if (nums[mid] < nums[right]) {
13
- if (nums[right] >= target && nums[mid] < target)left = mid + 1 ;
14
- else right = mid - 1 ;
4
+ int l = 0 , r = nums.size () - 1 ;
5
+ while (l <= r) {
6
+ int mid = (l + r) >> 1 ;
7
+ if (nums[mid] == target) return mid;
8
+ if (nums[mid] > target) {
9
+ if (nums[mid] >= nums[r] && target < nums[l]) l = mid + 1 ;
10
+ else r = mid - 1 ;
11
+ } else {
12
+ if (nums[mid] <= nums[l] && target > nums[r]) r = mid - 1 ;
13
+ else l = mid + 1 ;
15
14
}
16
- else {
17
- if (nums[left] <= target && nums[mid] > target)right = mid - 1 ;
18
- else left = mid + 1 ;
19
- }
20
- }
21
- return -1 ;
22
- }
23
- };
24
-
25
- ---------------
26
- class Solution {
27
- public:
28
- int search (vector<int >& nums, int target) {
29
- int len = nums.size ();
30
- for (int i = 0 ;i<len;i++) {
31
- if (target == nums[i])return i;
32
15
}
33
-
34
16
return -1 ;
35
17
}
36
- };
18
+ };
Original file line number Diff line number Diff line change @@ -95,41 +95,21 @@ class Solution {
95
95
``` cpp
96
96
class Solution {
97
97
public:
98
- bool search(vector<int >& nums, int target) {
99
- if(nums.size() < 1) {
100
- return false;
101
- }
102
- if(nums.size() == 1) {
103
- return nums[ 0] == target;
104
- }
105
- int n = nums.size();
106
- int l = 0, r = n - 1;
107
- while(l <= r) {
108
- int mid = (l + r) / 2;
109
- if(nums[ mid] == target) {
110
- return true;
111
- }
112
- if(nums[ l] == nums[ mid] && nums[ mid] == nums[ r] ) {
113
- l++;
114
- r--;
115
- }else if(nums[ l] <= nums[ mid] ) {
116
- //
117
- if(nums[ l] <= target && target < nums[ mid] ) {
118
- r = mid - 1;
119
- }else {
120
- l = mid + 1;
121
- }
122
- }else {
123
- //
124
- if(nums[ mid] < target && target <= nums[ r] ) {
125
- l = mid + 1;
126
- }else {
127
- r = mid - 1;
128
- }
129
- }
130
- }
131
- return false;
132
- }
98
+ bool search(vector<int >& nums, int target) {
99
+ int l = 0, r = nums.size() - 1;
100
+ while (l <= r) {
101
+ int mid = (l + r) >> 1;
102
+ if (nums[ mid] == target) return true;
103
+ if (nums[ mid] < nums[ r] || nums[ mid] < nums[ l] ) {
104
+ if (target > nums[ mid] && target <= nums[ r] ) l = mid + 1;
105
+ else r = mid - 1;
106
+ } else if (nums[ mid] > nums[ l] || nums[ mid] > nums[ r] ) {
107
+ if (target < nums[ mid] && target >= nums[ l] ) r = mid - 1;
108
+ else l = mid + 1;
109
+ } else r--;
110
+ }
111
+ return false;
112
+ }
133
113
};
134
114
```
135
115
Original file line number Diff line number Diff line change @@ -94,37 +94,17 @@ class Solution {
94
94
class Solution {
95
95
public:
96
96
bool search(vector<int >& nums, int target) {
97
- if(nums.size() < 1) {
98
- return false;
99
- }
100
- if(nums.size() == 1) {
101
- return nums[ 0] == target;
102
- }
103
- int n = nums.size();
104
- int l = 0, r = n - 1;
105
- while(l <= r) {
106
- int mid = (l + r) / 2;
107
- if(nums[ mid] == target) {
108
- return true;
109
- }
110
- if(nums[ l] == nums[ mid] && nums[ mid] == nums[ r] ) {
111
- l++;
112
- r--;
113
- }else if(nums[ l] <= nums[ mid] ) {
114
- //
115
- if(nums[ l] <= target && target < nums[ mid] ) {
116
- r = mid - 1;
117
- }else {
118
- l = mid + 1;
119
- }
120
- }else {
121
- //
122
- if(nums[ mid] < target && target <= nums[ r] ) {
123
- l = mid + 1;
124
- }else {
125
- r = mid - 1;
126
- }
127
- }
97
+ int l = 0, r = nums.size() - 1;
98
+ while (l <= r) {
99
+ int mid = (l + r) >> 1;
100
+ if (nums[ mid] == target) return true;
101
+ if (nums[ mid] < nums[ r] || nums[ mid] < nums[ l] ) {
102
+ if (target > nums[ mid] && target <= nums[ r] ) l = mid + 1;
103
+ else r = mid - 1;
104
+ } else if (nums[ mid] > nums[ l] || nums[ mid] > nums[ r] ) {
105
+ if (target < nums[ mid] && target >= nums[ l] ) r = mid - 1;
106
+ else l = mid + 1;
107
+ } else r--;
128
108
}
129
109
return false;
130
110
}
Original file line number Diff line number Diff line change 1
- /* *
2
- * Author: Moriarty12138
3
- */
4
- class Solution {
5
- public:
6
- bool search (vector<int >& nums, int target) {
7
- if (nums.size () < 1 ) {
8
- return false ;
9
- }
10
- if (nums.size () == 1 ) {
11
- return nums[0 ] == target;
12
- }
13
- int n = nums.size ();
14
- int l = 0 , r = n - 1 ;
15
- while (l <= r) {
16
- int mid = (l + r) / 2 ;
17
- if (nums[mid] == target) {
18
- return true ;
19
- }
20
- if (nums[l] == nums[mid] && nums[mid] == nums[r]) {
21
- l++;
22
- r--;
23
- }else if (nums[l] <= nums[mid]) {
24
- //
25
- if (nums[l] <= target && target < nums[mid]) {
26
- r = mid - 1 ;
27
- }else {
28
- l = mid + 1 ;
29
- }
30
- }else {
31
- //
32
- if (nums[mid] < target && target <= nums[r]) {
33
- l = mid + 1 ;
34
- }else {
35
- r = mid - 1 ;
36
- }
37
- }
38
- }
39
- return false ;
40
- }
41
- };
1
+ class Solution {
2
+ public:
3
+ bool search (vector<int >& nums, int target) {
4
+ int l = 0 , r = nums.size () - 1 ;
5
+ while (l <= r) {
6
+ int mid = (l + r) >> 1 ;
7
+ if (nums[mid] == target) return true ;
8
+ if (nums[mid] < nums[r] || nums[mid] < nums[l]) {
9
+ if (target > nums[mid] && target <= nums[r]) l = mid + 1 ;
10
+ else r = mid - 1 ;
11
+ } else if (nums[mid] > nums[l] || nums[mid] > nums[r]) {
12
+ if (target < nums[mid] && target >= nums[l]) r = mid - 1 ;
13
+ else l = mid + 1 ;
14
+ } else r--;
15
+ }
16
+ return false ;
17
+ }
18
+ };
You can’t perform that action at this time.
0 commit comments