mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Update 0035.搜索插入位置.md
增加C语言的两种版本,已通过Leetcode测试
This commit is contained in:
@ -429,7 +429,57 @@ function searchInsert($nums, $target)
|
||||
return $r + 1;
|
||||
}
|
||||
```
|
||||
|
||||
### C
|
||||
```c
|
||||
//版本一 [left, right]左闭右闭区间
|
||||
int searchInsert(int* nums, int numsSize, int target){
|
||||
//左闭右开区间 [0 , numsSize-1]
|
||||
int left =0;
|
||||
int mid =0;
|
||||
int right = numsSize - 1;
|
||||
while(left <= right){//左闭右闭区间 所以可以 left == right
|
||||
mid = left + (right - left) / 2;
|
||||
if(target < nums[mid]){
|
||||
//target 在左区间 [left, middle - 1]中,原区间包含mid,右区间边界可以向左内缩
|
||||
right = mid -1;
|
||||
}else if( target > nums[mid]){
|
||||
// target 在右区间 [mid + 1, right]中,原区间包含mid,左区间边界可以向右内缩
|
||||
left = mid + 1;
|
||||
}else {
|
||||
// nums[mid] == target ,顺利找到target,直接返回mid
|
||||
return mid;
|
||||
}
|
||||
}
|
||||
//数组中未找到target元素
|
||||
//target在数组所有元素之后,[left, right]是右闭区间,需要返回 right +1
|
||||
return right + 1;
|
||||
}
|
||||
```
|
||||
```c
|
||||
//版本二 [left, right]左闭右开区间
|
||||
int searchInsert(int* nums, int numsSize, int target){
|
||||
//左闭右开区间 [0 , numsSize)
|
||||
int left =0;
|
||||
int mid =0;
|
||||
int right = numsSize;
|
||||
while(left < right){//左闭右闭区间 所以 left < right
|
||||
mid = left + (right - left) / 2;
|
||||
if(target < nums[mid]){
|
||||
//target 在左区间 [left, mid)中,原区间没有包含mid,右区间边界可以不能内缩
|
||||
right = mid ;
|
||||
}else if( target > nums[mid]){
|
||||
// target 在右区间 [mid+1, right)中,原区间包含mid,左区间边界可以向右内缩
|
||||
left = mid + 1;
|
||||
}else {
|
||||
// nums[mid] == target ,顺利找到target,直接返回mid
|
||||
return mid;
|
||||
}
|
||||
}
|
||||
//数组中未找到target元素
|
||||
//target在数组所有元素之后,[left, right)是右开区间, return right即可
|
||||
return right;
|
||||
}
|
||||
```
|
||||
|
||||
-----------------------
|
||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||
|
Reference in New Issue
Block a user