From df5a6c62d50d0473745ce3406ceb4e04864fded1 Mon Sep 17 00:00:00 2001 From: vanyongqi <46806467+vanyongqi@users.noreply.github.com> Date: Tue, 20 Sep 2022 18:17:56 +0800 Subject: [PATCH 1/4] =?UTF-8?q?Update=200704.=E4=BA=8C=E5=88=86=E6=9F=A5?= =?UTF-8?q?=E6=89=BE.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加了二分查找C语言的左闭右开区间的版本,已通过leeitcode的验证 --- problems/0704.二分查找.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/problems/0704.二分查找.md b/problems/0704.二分查找.md index 53f5331a..26d821bd 100644 --- a/problems/0704.二分查找.md +++ b/problems/0704.二分查找.md @@ -515,7 +515,7 @@ impl Solution { ``` **C:** -```c +```c(版本一) int search(int* nums, int numsSize, int target){ int left = 0; int right = numsSize-1; @@ -541,6 +541,29 @@ int search(int* nums, int numsSize, int target){ return -1; } ``` +``` +C (版本二) +int search(int* nums, int numsSize, int target){ + int length = numsSize; + int left = 0; + int right = length;//定义target在左闭右开的区间里,即:[left, right) + int middle = 0; + while(left < right){// left == right时,区间[left, right)属于空集,所以用 < 避免该情况 + int middle = left + (right - left) / 2; + if(nums[middle] < target){ + //target位于(middle , right) 中为保证集合区间的左闭右开性,可等价为[middle + 1,right) + left = middle + 1; + }else if(nums[middle] > target){ + //target位于[left, middle)中 + right = middle ; + }else{// nums[middle] == target ,找到目标值target + return middle; + } + } + //未找到目标值,返回-1 + return -1; +} +``` **PHP:** ```php From 5da89e2613958ebd2376966516f5aad366fe04dc Mon Sep 17 00:00:00 2001 From: vanyongqi <46806467+vanyongqi@users.noreply.github.com> Date: Wed, 21 Sep 2022 08:47:25 +0800 Subject: [PATCH 2/4] =?UTF-8?q?Update=200704.=E4=BA=8C=E5=88=86=E6=9F=A5?= =?UTF-8?q?=E6=89=BE.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加了C语言版本的左闭右开区间版本 --- problems/0704.二分查找.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/problems/0704.二分查找.md b/problems/0704.二分查找.md index 26d821bd..012e4066 100644 --- a/problems/0704.二分查找.md +++ b/problems/0704.二分查找.md @@ -515,7 +515,8 @@ impl Solution { ``` **C:** -```c(版本一) +``` +//C (版本一) 左闭右闭区间 [left, right] int search(int* nums, int numsSize, int target){ int left = 0; int right = numsSize-1; @@ -542,13 +543,13 @@ int search(int* nums, int numsSize, int target){ } ``` ``` -C (版本二) +C (版本二) 左闭右开区间 [left, right) int search(int* nums, int numsSize, int target){ int length = numsSize; int left = 0; - int right = length;//定义target在左闭右开的区间里,即:[left, right) + int right = length; //定义target在左闭右开的区间里,即:[left, right) int middle = 0; - while(left < right){// left == right时,区间[left, right)属于空集,所以用 < 避免该情况 + while(left < right){ // left == right时,区间[left, right)属于空集,所以用 < 避免该情况 int middle = left + (right - left) / 2; if(nums[middle] < target){ //target位于(middle , right) 中为保证集合区间的左闭右开性,可等价为[middle + 1,right) @@ -556,7 +557,7 @@ int search(int* nums, int numsSize, int target){ }else if(nums[middle] > target){ //target位于[left, middle)中 right = middle ; - }else{// nums[middle] == target ,找到目标值target + }else{ // nums[middle] == target ,找到目标值target return middle; } } From 84e8f9c20145be25474b0b8df7737fbb9de27533 Mon Sep 17 00:00:00 2001 From: vanyongqi <46806467+vanyongqi@users.noreply.github.com> Date: Wed, 21 Sep 2022 14:05:08 +0800 Subject: [PATCH 3/4] =?UTF-8?q?Update=200704.=E4=BA=8C=E5=88=86=E6=9F=A5?= =?UTF-8?q?=E6=89=BE.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0704.二分查找.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/problems/0704.二分查找.md b/problems/0704.二分查找.md index 012e4066..472459de 100644 --- a/problems/0704.二分查找.md +++ b/problems/0704.二分查找.md @@ -515,8 +515,8 @@ impl Solution { ``` **C:** -``` -//C (版本一) 左闭右闭区间 [left, right] +```c +## (版本一) 左闭右闭区间 [left, right] int search(int* nums, int numsSize, int target){ int left = 0; int right = numsSize-1; @@ -542,8 +542,8 @@ int search(int* nums, int numsSize, int target){ return -1; } ``` -``` -C (版本二) 左闭右开区间 [left, right) +```C +##(版本二) 左闭右开区间 [left, right) int search(int* nums, int numsSize, int target){ int length = numsSize; int left = 0; From b9a26d4edfbc1b662b0a26ec7d193002cb915e45 Mon Sep 17 00:00:00 2001 From: vanyongqi <46806467+vanyongqi@users.noreply.github.com> Date: Wed, 21 Sep 2022 14:06:15 +0800 Subject: [PATCH 4/4] =?UTF-8?q?Update=200704.=E4=BA=8C=E5=88=86=E6=9F=A5?= =?UTF-8?q?=E6=89=BE.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0704.二分查找.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/problems/0704.二分查找.md b/problems/0704.二分查找.md index 472459de..21324db7 100644 --- a/problems/0704.二分查找.md +++ b/problems/0704.二分查找.md @@ -516,7 +516,7 @@ impl Solution { **C:** ```c -## (版本一) 左闭右闭区间 [left, right] +// (版本一) 左闭右闭区间 [left, right] int search(int* nums, int numsSize, int target){ int left = 0; int right = numsSize-1; @@ -543,7 +543,7 @@ int search(int* nums, int numsSize, int target){ } ``` ```C -##(版本二) 左闭右开区间 [left, right) +// (版本二) 左闭右开区间 [left, right) int search(int* nums, int numsSize, int target){ int length = numsSize; int left = 0;