Skip to content

Commit a192ad5

Browse files
committed
feat: update leetcode solutions: No.0033
1 parent 8fe48f9 commit a192ad5

File tree

4 files changed

+102
-16
lines changed

4 files changed

+102
-16
lines changed

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

+37-2
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,57 @@
3030

3131
<!-- 这里可写通用的实现逻辑 -->
3232

33+
二分查找。
34+
3335
<!-- tabs:start -->
3436

3537
### **Python3**
3638

3739
<!-- 这里可写当前语言的特殊实现逻辑 -->
3840

3941
```python
40-
42+
class Solution:
43+
def search(self, nums: List[int], target: int) -> int:
44+
l, r = 0, len(nums) - 1
45+
while l <= r:
46+
mid = (l + r) >> 1
47+
if nums[mid] == target:
48+
return mid
49+
if nums[mid] > target:
50+
if nums[mid] >= nums[r] and target < nums[l]:
51+
l = mid + 1
52+
else:
53+
r = mid - 1
54+
else:
55+
if nums[mid] <= nums[l] and target > nums[r]:
56+
r = mid - 1
57+
else:
58+
l = mid + 1
59+
return -1
4160
```
4261

4362
### **Java**
4463

4564
<!-- 这里可写当前语言的特殊实现逻辑 -->
4665

4766
```java
48-
67+
class Solution {
68+
public int search(int[] nums, int target) {
69+
int l = 0, r = nums.length - 1;
70+
while (l <= r) {
71+
int mid = (l + r) >>> 1;
72+
if (nums[mid] == target) return mid;
73+
if (nums[mid] > target) {
74+
if (nums[mid] >= nums[r] && target < nums[l]) l = mid + 1;
75+
else r = mid - 1;
76+
} else {
77+
if (nums[mid] <= nums[l] && target > nums[r]) r = mid - 1;
78+
else l = mid + 1;
79+
}
80+
}
81+
return -1;
82+
}
83+
}
4984
```
5085

5186
### **C++**

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

+35-2
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,46 @@
3939
### **Python3**
4040

4141
```python
42-
42+
class Solution:
43+
def search(self, nums: List[int], target: int) -> int:
44+
l, r = 0, len(nums) - 1
45+
while l <= r:
46+
mid = (l + r) >> 1
47+
if nums[mid] == target:
48+
return mid
49+
if nums[mid] > target:
50+
if nums[mid] >= nums[r] and target < nums[l]:
51+
l = mid + 1
52+
else:
53+
r = mid - 1
54+
else:
55+
if nums[mid] <= nums[l] and target > nums[r]:
56+
r = mid - 1
57+
else:
58+
l = mid + 1
59+
return -1
4360
```
4461

4562
### **Java**
4663

4764
```java
48-
65+
class Solution {
66+
public int search(int[] nums, int target) {
67+
int l = 0, r = nums.length - 1;
68+
while (l <= r) {
69+
int mid = (l + r) >>> 1;
70+
if (nums[mid] == target) return mid;
71+
if (nums[mid] > target) {
72+
if (nums[mid] >= nums[r] && target < nums[l]) l = mid + 1;
73+
else r = mid - 1;
74+
} else {
75+
if (nums[mid] <= nums[l] && target > nums[r]) r = mid - 1;
76+
else l = mid + 1;
77+
}
78+
}
79+
return -1;
80+
}
81+
}
4982
```
5083

5184
### **C++**

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

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
class Solution {
2-
public int search(int[] A, int target) {
3-
if (A == null || A.length == 0) return -1;
4-
int low = 0,high = A.length - 1;
5-
while (low <= high) {
6-
int mid = (low + high) >>> 1;
7-
if (target < A[mid]) {
8-
if (A[mid] >= A[high] && target < A[low]) low = mid + 1;
9-
else high = mid - 1;
10-
} else if (target > A[mid]) {
11-
if (A[low] >= A[mid] && target > A[high]) high = mid - 1;
12-
else low = mid + 1;
13-
} else return mid;
2+
public int search(int[] nums, int target) {
3+
int l = 0, r = nums.length - 1;
4+
while (l <= r) {
5+
int mid = (l + r) >>> 1;
6+
if (nums[mid] == target) return mid;
7+
if (nums[mid] > target) {
8+
if (nums[mid] >= nums[r] && target < nums[l]) l = mid + 1;
9+
else r = mid - 1;
10+
} else {
11+
if (nums[mid] <= nums[l] && target > nums[r]) r = mid - 1;
12+
else l = mid + 1;
13+
}
1414
}
1515
return -1;
1616
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution:
2+
def search(self, nums: List[int], target: int) -> int:
3+
l, r = 0, len(nums) - 1
4+
while l <= r:
5+
mid = (l + r) >> 1
6+
if nums[mid] == target:
7+
return mid
8+
if nums[mid] > target:
9+
if nums[mid] >= nums[r] and target < nums[l]:
10+
l = mid + 1
11+
else:
12+
r = mid - 1
13+
else:
14+
if nums[mid] <= nums[l] and target > nums[r]:
15+
r = mid - 1
16+
else:
17+
l = mid + 1
18+
return -1

0 commit comments

Comments
 (0)