LeetCode刷题笔记-35.搜索插入位置
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 (numsSize == 1) { //注意点1:比较失误少个=号定位半天
if (nums[0] >= target) { //注意点2:起始位置大于或等于target都返回s,即0
return 0;
} else {
return 1;
}
}
while(1) {//进来之前保证长度>=2
if (nums[s] >= target) {//注意点3:起始位置大于或等于target都返回s
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;
结果