Skip to content

Commit 9621938

Browse files
authored
feat: add solution to leetcode No.0033 No.0081 (doocs#355)
1 parent 10d2a4a commit 9621938

File tree

6 files changed

+214
-3
lines changed

6 files changed

+214
-3
lines changed

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

+40
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,46 @@
4848

4949
```
5050

51+
### **C++**
52+
53+
<!-- 这里可写当前语言的特殊实现逻辑 -->
54+
55+
```cpp
56+
class Solution {
57+
public:
58+
int search(vector<int>& nums, int target) {
59+
if(nums.size() < 1) {
60+
return -1;
61+
}
62+
if(nums.size() == 1) {
63+
return nums[0] == target ? 0 : -1;
64+
}
65+
int n = nums.size();
66+
int l = 0, r = n - 1;
67+
while(l <= r) {
68+
int mid = (l + r) / 2;
69+
if(nums[mid] == target) {
70+
return mid;
71+
}
72+
if(nums[l] <= nums[mid]) {
73+
if(nums[l] <= target && target < nums[mid]) {
74+
r = mid - 1;
75+
}else {
76+
l = mid + 1;
77+
}
78+
}else {
79+
if(nums[mid] < target && target <= nums[r]) {
80+
l = mid + 1;
81+
}else {
82+
r = mid - 1;
83+
}
84+
}
85+
}
86+
return -1;
87+
}
88+
};
89+
```
90+
5191
### **...**
5292
5393
```

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

+40
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,46 @@
4848

4949
```
5050

51+
### **C++**
52+
53+
<!-- 这里可写当前语言的特殊实现逻辑 -->
54+
55+
```cpp
56+
class Solution {
57+
public:
58+
int search(vector<int>& nums, int target) {
59+
if(nums.size() < 1) {
60+
return -1;
61+
}
62+
if(nums.size() == 1) {
63+
return nums[0] == target ? 0 : -1;
64+
}
65+
int n = nums.size();
66+
int l = 0, r = n - 1;
67+
while(l <= r) {
68+
int mid = (l + r) / 2;
69+
if(nums[mid] == target) {
70+
return mid;
71+
}
72+
if(nums[l] <= nums[mid]) {
73+
if(nums[l] <= target && target < nums[mid]) {
74+
r = mid - 1;
75+
}else {
76+
l = mid + 1;
77+
}
78+
}else {
79+
if(nums[mid] < target && target <= nums[r]) {
80+
l = mid + 1;
81+
}else {
82+
r = mid - 1;
83+
}
84+
}
85+
}
86+
return -1;
87+
}
88+
};
89+
```
90+
5191
### **...**
5292
5393
```

solution/0000-0099/0033.Search in Rotated Sorted Array/Solution.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class Solution {
88
while(left <= right) {
99
mid = (left + right) / 2;
1010
if(nums[mid] == target)return mid;
11-
11+
1212
if(nums[mid] < nums[right]) {
1313
if(nums[right] >= target && nums[mid] < target)left = mid + 1;
1414
else right = mid - 1;
@@ -18,7 +18,7 @@ class Solution {
1818
else left = mid + 1;
1919
}
2020
}
21-
return -1;
21+
return -1;
2222
}
2323
};
2424

@@ -30,7 +30,7 @@ class Solution {
3030
for(int i = 0;i<len;i++) {
3131
if(target == nums[i])return i;
3232
}
33-
33+
3434
return -1;
3535
}
3636
};

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

+45
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,51 @@
5151

5252
```
5353

54+
### **C++**
55+
56+
<!-- 这里可写当前语言的特殊实现逻辑 -->
57+
58+
```cpp
59+
class Solution {
60+
public:
61+
bool search(vector<int>& nums, int target) {
62+
if(nums.size() < 1) {
63+
return false;
64+
}
65+
if(nums.size() == 1) {
66+
return nums[0] == target;
67+
}
68+
int n = nums.size();
69+
int l = 0, r = n - 1;
70+
while(l <= r) {
71+
int mid = (l + r) / 2;
72+
if(nums[mid] == target) {
73+
return true;
74+
}
75+
if(nums[l] == nums[mid] && nums[mid] == nums[r]) {
76+
l++;
77+
r--;
78+
}else if(nums[l] <= nums[mid]) {
79+
//
80+
if(nums[l] <= target && target < nums[mid]) {
81+
r = mid - 1;
82+
}else {
83+
l = mid + 1;
84+
}
85+
}else {
86+
//
87+
if(nums[mid] < target && target <= nums[r]) {
88+
l = mid + 1;
89+
}else {
90+
r = mid - 1;
91+
}
92+
}
93+
}
94+
return false;
95+
}
96+
};
97+
```
98+
5499
### **...**
55100
56101
```

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

+45
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,51 @@
5151

5252
```
5353

54+
### **C++**
55+
56+
<!-- 这里可写当前语言的特殊实现逻辑 -->
57+
58+
```cpp
59+
class Solution {
60+
public:
61+
bool search(vector<int>& nums, int target) {
62+
if(nums.size() < 1) {
63+
return false;
64+
}
65+
if(nums.size() == 1) {
66+
return nums[0] == target;
67+
}
68+
int n = nums.size();
69+
int l = 0, r = n - 1;
70+
while(l <= r) {
71+
int mid = (l + r) / 2;
72+
if(nums[mid] == target) {
73+
return true;
74+
}
75+
if(nums[l] == nums[mid] && nums[mid] == nums[r]) {
76+
l++;
77+
r--;
78+
}else if(nums[l] <= nums[mid]) {
79+
//
80+
if(nums[l] <= target && target < nums[mid]) {
81+
r = mid - 1;
82+
}else {
83+
l = mid + 1;
84+
}
85+
}else {
86+
//
87+
if(nums[mid] < target && target <= nums[r]) {
88+
l = mid + 1;
89+
}else {
90+
r = mid - 1;
91+
}
92+
}
93+
}
94+
return false;
95+
}
96+
};
97+
```
98+
5499
### **...**
55100
56101
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
};

0 commit comments

Comments
 (0)