diff --git a/animation-simulation/二分查找及其变种/leetcode 81不完全有序查找目标元素(包含重复值) .md b/animation-simulation/二分查找及其变种/leetcode 81不完全有序查找目标元素(包含重复值) .md index aff72c1..2964fe2 100644 --- a/animation-simulation/二分查找及其变种/leetcode 81不完全有序查找目标元素(包含重复值) .md +++ b/animation-simulation/二分查找及其变种/leetcode 81不完全有序查找目标元素(包含重复值) .md @@ -96,7 +96,7 @@ func search(nums []int, target int) bool { right = mid - 1 } else if (target > nums[mid] || target < nums[left]) { left = mid + 1 - } + } }else if (nums[mid] < nums[left]) { if (nums[mid] < target && target <= nums[right]) { @@ -104,7 +104,7 @@ func search(nums []int, target int) bool { } else if (target < nums[mid] || target > nums[right]) { right = mid - 1 } - } + } } return false } diff --git a/animation-simulation/二分查找及其变种/leetcode153搜索旋转数组的最小值.md b/animation-simulation/二分查找及其变种/leetcode153搜索旋转数组的最小值.md index ea27f10..d705ef4 100644 --- a/animation-simulation/二分查找及其变种/leetcode153搜索旋转数组的最小值.md +++ b/animation-simulation/二分查找及其变种/leetcode153搜索旋转数组的最小值.md @@ -113,10 +113,10 @@ func findMin(nums []int) int { right := len(nums) - 1 for (left < right) { - + if (nums[left] < nums[right]) { return nums[left] - } + } mid := left + ((right - left) >> 1) if (nums[left] > nums[mid]) { right = mid diff --git a/animation-simulation/二分查找及其变种/leetcode33不完全有序查找目标元素(不包含重复值).md b/animation-simulation/二分查找及其变种/leetcode33不完全有序查找目标元素(不包含重复值).md index 654ced5..78d4f75 100644 --- a/animation-simulation/二分查找及其变种/leetcode33不完全有序查找目标元素(不包含重复值).md +++ b/animation-simulation/二分查找及其变种/leetcode33不完全有序查找目标元素(不包含重复值).md @@ -163,5 +163,5 @@ func search(nums []int, target int) int { } } return -1 -} +} ``` diff --git a/animation-simulation/二分查找及其变种/leetcode34查找第一个位置和最后一个位置.md b/animation-simulation/二分查找及其变种/leetcode34查找第一个位置和最后一个位置.md index 11af344..2e62413 100644 --- a/animation-simulation/二分查找及其变种/leetcode34查找第一个位置和最后一个位置.md +++ b/animation-simulation/二分查找及其变种/leetcode34查找第一个位置和最后一个位置.md @@ -203,13 +203,13 @@ func lowerBound(nums []int, target int) int { //计算上边界 func upperBound(nums []int, target int) int { left, right := 0, len(nums) - 1 - for (left <= right) { + for (left <= right) { mid := left + ((right - left) >> 1) if (target >= nums[mid]) { - left = mid + 1 + left = mid + 1 }else if (target < nums[mid]) { right = mid - 1 - } + } } return right } diff --git a/animation-simulation/二分查找及其变种/二分查找详解.md b/animation-simulation/二分查找及其变种/二分查找详解.md index 5f59988..b285a24 100644 --- a/animation-simulation/二分查找及其变种/二分查找详解.md +++ b/animation-simulation/二分查找及其变种/二分查找详解.md @@ -140,7 +140,6 @@ func binarySearch(nums []int, target, left, right int) int { } ``` - 二分查找的思路及代码已经理解了,那么我们来看一下实现时容易出错的地方 1.计算 mid 时 ,不能使用 (left + right )/ 2,否则有可能会导致溢出 @@ -157,7 +156,7 @@ Java Code: ```java public static int binarySearch(int[] nums,int target,int left, int right) { - + if (left <= right) { int mid = left + ((right - left) >> 1); if (nums[mid] == target) { diff --git a/animation-simulation/二分查找及其变种/二维数组的二分查找.md b/animation-simulation/二分查找及其变种/二维数组的二分查找.md index f775bf9..c9ff418 100644 --- a/animation-simulation/二分查找及其变种/二维数组的二分查找.md +++ b/animation-simulation/二分查找及其变种/二维数组的二分查找.md @@ -87,6 +87,7 @@ class Solution { ``` Go Code: + ```go func searchMatrix(matrix [][]int, target int) bool { if len(matrix) == 0 { diff --git a/animation-simulation/二分查找及其变种/找出第一个大于或小于目标的索引.md b/animation-simulation/二分查找及其变种/找出第一个大于或小于目标的索引.md index 25f5dc7..c3484b4 100644 --- a/animation-simulation/二分查找及其变种/找出第一个大于或小于目标的索引.md +++ b/animation-simulation/二分查找及其变种/找出第一个大于或小于目标的索引.md @@ -62,6 +62,7 @@ public static int lowBoundnum(int[] nums,int target,int left, int right) { ``` Go Code: + ```go func lowBoundnum(nums []int, target, left, right int) int {