From 7799a7712b82e8ec3404733c3ababcda59d39be7 Mon Sep 17 00:00:00 2001 From: ArthurP Date: Sat, 28 Aug 2021 19:05:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=200704.=E4=BA=8C=E5=88=86?= =?UTF-8?q?=E6=9F=A5=E6=89=BE.md=20C=E8=AF=AD=E8=A8=80=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0704.二分查找.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/problems/0704.二分查找.md b/problems/0704.二分查找.md index f2af7daa..495f7367 100644 --- a/problems/0704.二分查找.md +++ b/problems/0704.二分查找.md @@ -374,7 +374,7 @@ func search(nums: [Int], target: Int) -> Int { } else if target > nums[middle] { // 当目标在区间右侧,就需要更新左边的边界值,新区间为[middle + 1, right] left = middle + 1 - } else { + } else { // 当目标就是在中间,则返回中间值的下标 return middle } @@ -450,6 +450,33 @@ impl Solution { } ``` +**C:** +```c +int search(int* nums, int numsSize, int target){ + int left = 0; + int right = numsSize-1; + int middle = 0; + //若left小于等于right,说明区间中元素不为0 + while(left<=right) { + //更新查找下标middle的值 + middle = (left+right)/2; + //此时target可能会在[left,middle-1]区间中 + if(nums[middle] > target) { + right = middle-1; + } + //此时target可能会在[middle+1,right]区间中 + else if(nums[middle] < target) { + left = middle+1; + } + //当前下标元素等于target值时,返回middle + else if(nums[middle] == target){ + return middle; + } + } + //若未找到target元素,返回-1 + return -1; +} +``` ----------------------- * 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)