Skip to content

Commit 02aaf28

Browse files
author
lincongcong
committed
add erfen in go
1 parent a177043 commit 02aaf28

File tree

1 file changed

+41
-17
lines changed

1 file changed

+41
-17
lines changed

animation-simulation/二分查找及其变种/找出第一个大于或小于目标的索引.md

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -76,25 +76,49 @@ public static int lowBoundnum(int[] nums,int target,int left, int right) {
7676
```java
7777
public static int upperBoundnum(int[] nums,int target,int left, int right) {
7878

79-
while (left <= right) {
80-
81-
int mid = left + ((right - left) >> 1);
82-
//小于目标值
83-
if (nums[mid] < target) {
84-
//看看是不是当前区间的最后一位,如果当前小于,后面一位大于,返回当前值即可
85-
if (mid == right || nums[mid+1] >= target) {
86-
return mid;
87-
}
88-
else{
89-
left = mid + 1;
90-
}
91-
92-
} else if (nums[mid] >= target){
93-
right = mid - 1;
79+
while (left <= right) {
80+
81+
int mid = left + ((right - left) >> 1);
82+
//小于目标值
83+
if (nums[mid] < target) {
84+
//看看是不是当前区间的最后一位,如果当前小于,后面一位大于,返回当前值即可
85+
if (mid == right || nums[mid+1] >= target) {
86+
return mid;
87+
}
88+
else{
89+
left = mid + 1;
9490
}
91+
92+
} else if (nums[mid] >= target){
93+
right = mid - 1;
9594
}
96-
//没有查询到的情况
97-
return -1;
9895
}
96+
//没有查询到的情况
97+
return -1;
98+
}
9999
```
100100

101+
Go Code:
102+
```go
103+
func upperBoundnum(nums []int, target, left, right int) int {
104+
105+
for left <= right {
106+
107+
mid := left + ((right - left) >> 1)
108+
//小于目标值
109+
if nums[mid] < target {
110+
//看看是不是当前区间的最后一位,如果当前小于,后面一位大于,返回当前值即可
111+
if mid == right || nums[mid+1] >= target {
112+
return mid
113+
} else {
114+
left = mid + 1
115+
}
116+
117+
} else if nums[mid] >= target {
118+
right = mid - 1
119+
}
120+
}
121+
//没有查询到的情况
122+
return -1
123+
}
124+
```

0 commit comments

Comments
 (0)