暴力解:
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int i;
for(i=0;i<nums.size();i++)//nums.size()表数组的长度
{
if(nums[i]>=target)//数组nums有序单增,数组中的元素无重复的,当数组中的某个数据大于目标数target时,说明目前的nums数组的元素是大于target的第一个元素,所以是其插入的位置,直接break退出。等于号是因为目标数在数组中的时候,退出输入的i为目标数在数组中的位置
{
break;
}
}
return i;
}
};
二分查找:
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int f=0,r=nums.size()-1,mid=(f+r)/2;
while(f<=r)
{
if(nums[mid]<target)
{
f=mid+1;
mid=(f+r)/2;
}
else if(nums[mid]>target)
{
r=mid-1;
mid=(f+r)/2;
}
else
if(nums[mid]==target)
{
return mid;
}
}
return r+1;
}
};