From 89b2b1cf5e70a1dc4745819c25ce3f336bfacfab Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 3 Dec 2022 00:26:47 +0800 Subject: [PATCH] =?UTF-8?q?Python=E7=89=88=E6=9C=AC=E4=B8=A5=E6=A0=BC?= =?UTF-8?q?=E5=8F=82=E7=85=A7C++=E5=86=99=E6=B3=95=E5=8F=8A=E6=AC=A1?= =?UTF-8?q?=E5=BA=8F=EF=BC=8C=E5=B9=B6=E8=BF=BD=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0704.二分查找.md | 38 +++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/problems/0704.二分查找.md b/problems/0704.二分查找.md index 27af3f49..a02bf7a2 100644 --- a/problems/0704.二分查找.md +++ b/problems/0704.二分查找.md @@ -204,18 +204,18 @@ class Solution { ```python class Solution: def search(self, nums: List[int], target: int) -> int: - left, right = 0, len(nums) - 1 - - while left <= right: - middle = (left + right) // 2 + left, right = 0, len(nums) - 1 # 定义target在左闭右闭的区间里,[left, right] - if nums[middle] < target: - left = middle + 1 - elif nums[middle] > target: - right = middle - 1 + while left <= right: + middle = left + (right - left) // 2 + + if nums[middle] > target: + right = middle - 1 # target在左区间,所以[left, middle - 1] + elif nums[middle] < target: + left = middle + 1 # target在右区间,所以[middle + 1, right] else: - return middle - return -1 + return middle # 数组中找到目标值,直接返回下标 + return -1 # 未找到目标值 ``` (版本二)左闭右开区间 @@ -223,18 +223,18 @@ class Solution: ```python class Solution: def search(self, nums: List[int], target: int) -> int: - left, right = 0, len(nums) + left, right = 0, len(nums) # 定义target在左闭右开的区间里,即:[left, right) - while left < right: - middle = (left + right) // 2 + while left < right: # 因为left == right的时候,在[left, right)是无效的空间,所以使用 < + middle = left + (right - left) // 2 - if nums[middle] < target: - left = middle + 1 - elif nums[middle] > target: - right = middle + if nums[middle] > target: + right = middle # target 在左区间,在[left, middle)中 + elif nums[middle] < target: + left = middle + 1 # target 在右区间,在[middle + 1, right)中 else: - return middle - return -1 + return middle # 数组中找到目标值,直接返回下标 + return -1 # 未找到目标值 ``` **Go:**