Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d3d3b3d

Browse files
Merge pull request youngyangyang04#1672 from vanyongqi/master
提交C语言两种种版本
2 parents d6fbaea + 4276745 commit d3d3b3d

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

‎problems/0035.搜索插入位置.md‎

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,57 @@ function searchInsert($nums, $target)
429429
return $r + 1;
430430
}
431431
```
432-
432+
### C
433+
```c
434+
//版本一 [left, right]左闭右闭区间
435+
int searchInsert(int* nums, int numsSize, int target){
436+
//左闭右开区间 [0 , numsSize-1]
437+
int left =0;
438+
int mid =0;
439+
int right = numsSize - 1;
440+
while(left <= right){//左闭右闭区间 所以可以 left == right
441+
mid = left + (right - left) / 2;
442+
if(target < nums[mid]){
443+
//target 在左区间 [left, mid - 1]中,原区间包含mid,右区间边界可以向左内缩
444+
right = mid -1;
445+
}else if( target > nums[mid]){
446+
//target 在右区间 [mid + 1, right]中,原区间包含mid,左区间边界可以向右内缩
447+
left = mid + 1;
448+
}else {
449+
// nums[mid] == target ,顺利找到target,直接返回mid
450+
return mid;
451+
}
452+
}
453+
//数组中未找到target元素
454+
//target在数组所有元素之后,[left, right]是右闭区间,需要返回 right +1
455+
return right + 1;
456+
}
457+
```
458+
```c
459+
//版本二 [left, right]左闭右开区间
460+
int searchInsert(int* nums, int numsSize, int target){
461+
//左闭右开区间 [0 , numsSize)
462+
int left =0;
463+
int mid =0;
464+
int right = numsSize;
465+
while(left < right){//左闭右闭区间 所以 left < right
466+
mid = left + (right - left) / 2;
467+
if(target < nums[mid]){
468+
//target 在左区间 [left, mid)中,原区间没有包含mid,右区间边界不能内缩
469+
right = mid ;
470+
}else if( target > nums[mid]){
471+
// target 在右区间 [mid+1, right)中,原区间包含mid,左区间边界可以向右内缩
472+
left = mid + 1;
473+
}else {
474+
// nums[mid] == target ,顺利找到target,直接返回mid
475+
return mid;
476+
}
477+
}
478+
//数组中未找到target元素
479+
//target在数组所有元素之后,[left, right)是右开区间, return right即可
480+
return right;
481+
}
482+
```
433483

434484
-----------------------
435485
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /