diff --git a/animation-simulation/二分查找及其变种/找出第一个大于或小于目标的索引.md b/animation-simulation/二分查找及其变种/找出第一个大于或小于目标的索引.md index c58d6cc..9e79ded 100644 --- a/animation-simulation/二分查找及其变种/找出第一个大于或小于目标的索引.md +++ b/animation-simulation/二分查找及其变种/找出第一个大于或小于目标的索引.md @@ -76,25 +76,49 @@ public static int lowBoundnum(int[] nums,int target,int left, int right) { ```java public static int upperBoundnum(int[] nums,int target,int left, int right) { - while (left <= right) { + while (left <= right) { - int mid = left + ((right - left) >> 1); - //小于目标值 - if (nums[mid] < target) { - //看看是不是当前区间的最后一位,如果当前小于,后面一位大于,返回当前值即可 - if (mid == right || nums[mid+1] >= target) { - return mid; - } - else{ - left = mid + 1; - } - - } else if (nums[mid] >= target){ - right = mid - 1; + int mid = left + ((right - left) >> 1); + //小于目标值 + if (nums[mid] < target) { + //看看是不是当前区间的最后一位,如果当前小于,后面一位大于,返回当前值即可 + if (mid == right || nums[mid+1] >= target) { + return mid; } + else{ + left = mid + 1; + } + + } else if (nums[mid] >= target){ + right = mid - 1; } - //没有查询到的情况 - return -1; } + //没有查询到的情况 + return -1; +} ``` +Go Code: +```go +func upperBoundnum(nums []int, target, left, right int) int { + + for left <= right { + + mid := left + ((right - left) >> 1) + //小于目标值 + if nums[mid] < target { + //看看是不是当前区间的最后一位,如果当前小于,后面一位大于,返回当前值即可 + if mid == right || nums[mid+1] >= target { + return mid + } else { + left = mid + 1 + } + + } else if nums[mid] >= target { + right = mid - 1 + } + } + //没有查询到的情况 + return -1 +} +``` \ No newline at end of file