Skip to content

Commit dd4f5e0

Browse files
committed
feat: update leetcode solutions: No.0033 & No.0081
1 parent a338359 commit dd4f5e0

File tree

6 files changed

+75
-186
lines changed

6 files changed

+75
-186
lines changed

solution/0000-0099/0033.Search in Rotated Sorted Array/README.md

+10-25
Original file line numberDiff line numberDiff line change
@@ -91,31 +91,16 @@ class Solution {
9191
class Solution {
9292
public:
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;

solution/0000-0099/0033.Search in Rotated Sorted Array/README_EN.md

+10-25
Original file line numberDiff line numberDiff line change
@@ -89,31 +89,16 @@ class Solution {
8989
class Solution {
9090
public:
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 numberDiff line numberDiff line change
@@ -1,36 +1,18 @@
11
class Solution {
22
public:
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+
};

solution/0000-0099/0081.Search in Rotated Sorted Array II/README.md

+15-35
Original file line numberDiff line numberDiff line change
@@ -95,41 +95,21 @@ class Solution {
9595
```cpp
9696
class Solution {
9797
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+
}
133113
};
134114
```
135115

solution/0000-0099/0081.Search in Rotated Sorted Array II/README_EN.md

+11-31
Original file line numberDiff line numberDiff line change
@@ -94,37 +94,17 @@ class Solution {
9494
class Solution {
9595
public:
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 numberDiff line numberDiff line change
@@ -1,41 +1,18 @@
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+
};

0 commit comments

Comments
 (0)