Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit e934412

Browse files
committed
feat: add solutions to lc problem: No.0704. Binary Search
1 parent aafa116 commit e934412

File tree

6 files changed

+153
-47
lines changed

6 files changed

+153
-47
lines changed

‎solution/0700-0799/0704.Binary Search/README.md‎

Lines changed: 56 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,16 @@
4545
<!-- 这里可写当前语言的特殊实现逻辑 -->
4646

4747
```python
48-
48+
class Solution:
49+
def search(self, nums: List[int], target: int) -> int:
50+
left, right = 0, len(nums) - 1
51+
while left < right:
52+
mid = (left + right) >> 1
53+
if nums[mid] >= target:
54+
right = mid
55+
else:
56+
left = mid + 1
57+
return left if nums[left] == target else -1
4958
```
5059

5160
### **Java**
@@ -55,20 +64,57 @@
5564
```java
5665
class Solution {
5766
public int search(int[] nums, int target) {
58-
int low = 0, high = nums.length - 1;
59-
while (low <= high) {
60-
int mid = (low + high) >>> 1;
61-
if (nums[mid] == target) {
62-
return mid;
67+
int left = 0, right = nums.length - 1;
68+
while (left < right) {
69+
int mid = (left + right) >> 1;
70+
if (nums[mid] >= target) {
71+
right = mid;
72+
} else {
73+
left = mid + 1;
6374
}
64-
if (nums[mid] < target) {
65-
low = mid + 1;
75+
}
76+
return nums[left] == target ? left : -1;
77+
}
78+
}
79+
```
80+
81+
### **C++**
82+
83+
```cpp
84+
class Solution {
85+
public:
86+
int search(vector<int>& nums, int target) {
87+
int left = 0, right = nums.size() - 1;
88+
while (left < right) {
89+
int mid = left + right >> 1;
90+
if (nums[mid] >= target) {
91+
right = mid;
6692
} else {
67-
high = mid - 1;
93+
left = mid + 1;
6894
}
6995
}
70-
return -1;
96+
return nums[left] == target ? left : -1;
7197
}
98+
};
99+
```
100+
101+
### **Go**
102+
103+
```go
104+
func search(nums []int, target int) int {
105+
left, right := 0, len(nums)-1
106+
for left < right {
107+
mid := (left + right) >> 1
108+
if nums[mid] >= target {
109+
right = mid
110+
} else {
111+
left = mid + 1
112+
}
113+
}
114+
if nums[left] == target {
115+
return left
116+
}
117+
return -1
72118
}
73119
```
74120

‎solution/0700-0799/0704.Binary Search/README_EN.md‎

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,37 +43,72 @@
4343
```python
4444
class Solution:
4545
def search(self, nums: List[int], target: int) -> int:
46-
low, high = 0, len(nums) - 1
47-
while low <= high:
48-
mid = (low + high) >> 1
49-
if nums[mid] == target:
50-
return mid
51-
if nums[mid] < target:
52-
low = mid + 1
46+
left, right = 0, len(nums) - 1
47+
while left < right:
48+
mid = (left + right) >> 1
49+
if nums[mid] >= target:
50+
right = mid
5351
else:
54-
high = mid - 1
55-
return -1
52+
left = mid + 1
53+
return left if nums[left] == target else-1
5654
```
5755

5856
### **Java**
5957

6058
```java
6159
class Solution {
6260
public int search(int[] nums, int target) {
63-
int low = 0, high = nums.length - 1;
64-
while (low <= high) {
65-
int mid = (low + high) >>> 1;
66-
if (nums[mid] == target) {
67-
return mid;
61+
int left = 0, right = nums.length - 1;
62+
while (left < right) {
63+
int mid = (left + right) >> 1;
64+
if (nums[mid] >= target) {
65+
right = mid;
66+
} else {
67+
left = mid + 1;
6868
}
69-
if (nums[mid] < target) {
70-
low = mid + 1;
69+
}
70+
return nums[left] == target ? left : -1;
71+
}
72+
}
73+
```
74+
75+
### **C++**
76+
77+
```cpp
78+
class Solution {
79+
public:
80+
int search(vector<int>& nums, int target) {
81+
int left = 0, right = nums.size() - 1;
82+
while (left < right) {
83+
int mid = left + right >> 1;
84+
if (nums[mid] >= target) {
85+
right = mid;
7186
} else {
72-
high = mid - 1;
87+
left = mid + 1;
7388
}
7489
}
75-
return -1;
90+
return nums[left] == target ? left : -1;
7691
}
92+
};
93+
```
94+
95+
### **Go**
96+
97+
```go
98+
func search(nums []int, target int) int {
99+
left, right := 0, len(nums)-1
100+
for left < right {
101+
mid := (left + right) >> 1
102+
if nums[mid] >= target {
103+
right = mid
104+
} else {
105+
left = mid + 1
106+
}
107+
}
108+
if nums[left] == target {
109+
return left
110+
}
111+
return -1
77112
}
78113
```
79114

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int search(vector<int>& nums, int target) {
4+
int left = 0, right = nums.size() - 1;
5+
while (left < right) {
6+
int mid = left + right >> 1;
7+
if (nums[mid] >= target) {
8+
right = mid;
9+
} else {
10+
left = mid + 1;
11+
}
12+
}
13+
return nums[left] == target ? left : -1;
14+
}
15+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
func search(nums []int, target int) int {
2+
left, right := 0, len(nums)-1
3+
for left < right {
4+
mid := (left + right) >> 1
5+
if nums[mid] >= target {
6+
right = mid
7+
} else {
8+
left = mid + 1
9+
}
10+
}
11+
if nums[left] == target {
12+
return left
13+
}
14+
return -1
15+
}
Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
class Solution {
22
public int search(int[] nums, int target) {
3-
int low = 0, high = nums.length - 1;
4-
while (low <= high) {
5-
int mid = (low + high) >>> 1;
6-
if (nums[mid] == target) {
7-
return mid;
8-
}
9-
if (nums[mid] < target) {
10-
low = mid + 1;
3+
int left = 0, right = nums.length - 1;
4+
while (left < right) {
5+
int mid = (left + right) >> 1;
6+
if (nums[mid] >= target) {
7+
right = mid;
118
} else {
12-
high = mid - 1;
9+
left = mid + 1;
1310
}
1411
}
15-
return -1;
12+
return nums[left] == target ? left : -1;
1613
}
1714
}
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
class Solution:
22
def search(self, nums: List[int], target: int) -> int:
3-
low, high = 0, len(nums) - 1
4-
while low <= high:
5-
mid = (low + high) >> 1
6-
if nums[mid] == target:
7-
return mid
8-
if nums[mid] < target:
9-
low = mid + 1
3+
left, right = 0, len(nums) - 1
4+
while left < right:
5+
mid = (left + right) >> 1
6+
if nums[mid] >= target:
7+
right = mid
108
else:
11-
high = mid - 1
12-
return -1
9+
left = mid + 1
10+
return leftifnums[left] ==targetelse-1

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /