35-搜索插入位置
leetcode题解——搜索插入位置
题目如下
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
解题思路
给定的数组是有序且无重复元素的,可以考虑暴力法和二分法
插入位置可以有四种情况:
- 目标位置在所有元素之前
- 目标位置等于某一个元素
- 目标位置在两个元素之间
- 目标位置在所有元素之后
//暴力法
int searchInsert(int* nums, int numsSize, int target){
int n=0;
int i;
if(nums[0]>=target){
return 0;
}
for(i=1; i<numsSize; i++){
if(nums[i]<target){
continue;
}else if(nums[i]==target){
break;
}else{
if(nums[i-1]==target){
i--;
break;
}
if(nums[i-1]<target){
break;
}
}
}
return i;
}
//二分法
int searchInsert(int* nums, int numsSize, int target){
int left=0;
int right=numsSize-1;
int mid;
while(left<=right){
mid=(left+right)/2;
if(nums[mid]>target){
right=mid-1;
}else if(nums[mid]<target){
left=mid+1;
}else{
return mid;
}
}
return right+1;
}

浙公网安备 33010602011771号