File tree Expand file tree Collapse file tree 6 files changed +75
-186
lines changed
0033.Search in Rotated Sorted Array
0081.Search in Rotated Sorted Array II Expand file tree Collapse file tree 6 files changed +75
-186
lines changed Original file line number Diff line number Diff line change @@ -91,31 +91,16 @@ class Solution {
9191class Solution {
9292public:
9393 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;
119104 }
120105 }
121106 return -1;
Original file line number Diff line number Diff line change @@ -89,31 +89,16 @@ class Solution {
8989class Solution {
9090public:
9191 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;
117102 }
118103 }
119104 return -1;
Original file line number Diff line number Diff line change 11class Solution {
22public:
33 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 ;
1514 }
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;
3215 }
33-
3416 return -1 ;
3517 }
36- };
18+ };
Original file line number Diff line number Diff line change @@ -95,41 +95,21 @@ class Solution {
9595``` cpp
9696class Solution {
9797public:
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+ }
133113};
134114```
135115
Original file line number Diff line number Diff line change @@ -94,37 +94,17 @@ class Solution {
9494class Solution {
9595public:
9696 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--;
128108 }
129109 return false;
130110 }
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