Leetcode 35搜索插入位置 c语言100%实现
【题目】
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5
输出: 2
示例 2:
输入: [1,3,5,6], 2
输出: 1
示例 3:
输入: [1,3,5,6], 7
输出: 4
示例 4:
输入: [1,3,5,6], 0
输出: 0
【思路】
首先想到的是一遍遍历O(n)暴力破解
1 int searchInsert(int* nums, int numsSize, int target){ 2 int i = 0; 3 for(; i < numsSize; i++) { 4 if (target <= nums[i]) 5 return i; 6 } 7 return i; 8 }
执行用时超过97.68%……不爽
然后去想用二分搜索,因为原数组有序
1 int searchInsert(int* nums, int numsSize, int target){ 2 int low = 0, high = numsSize-1, mid; 3 while(low <= high) { 4 mid = (low + high) / 2; 5 if (target == nums[mid]) 6 return mid; 7 else if (target < nums[mid]) 8 high = mid - 1; 9 else 10 low = mid + 1; 11 } 12 return low; 13 }
【BUG分析】
啊啊啊二分搜索判断条件是low <= high我每次都写成<
之后的加一减一还是记不住1551

浙公网安备 33010602011771号