C代码
int searchInsert(int* nums, int numsSize, int target){
int s = 0;
int e = numsSize - 1;
int mid = 0;
if (numsSize < 1) {
return 0;
}
#if 0
if (numsSize == 1) {
if (nums[0] >= target) {
return 0;
} else {
return 1;
}
}
#endif
while(1) {
if (nums[s] >= target) {
return s;
}
if (nums[e] < target) {
return e+1;
}
if ((e - s + 1) == 2) {
return e;
} else {
mid = (s + e) / 2;
if (nums[mid] > target) {
e = mid;
} else if (nums[mid] < target) {
s = mid;
} else {
return mid;
}
}
}
return 0;
}
注意点
- if内的条件比较,将==误写成=,审查半天未果,最后通过上机调试才能发现问题;
- 范围查询条件判断中,下标s出现大于或者等于target的就返回s;
结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/4aa856815a4d4ba8bcab34cbca8677c5.png)
题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/d546a19e9862422593b2be24c6b2d2ff.png)