leetcode刷题记录-35. Search Insert Position
题目要求:Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
代码如下:
int searchInsert(vector<int>& nums, int target)
{
int count=nums.size();
int i,res;
if(count==0)
{
return 0;
}
if(count==1)
{
if(target==nums[0])
return 0;
else
return 1;
}
for(i=0;i<count-1;i++)
{
if((target>=nums[i])&&(target<=nums[i+1]))
{
if(target==nums[i])
{
return i;
}
else
{
return i+1;
}
}
}
}
运行结果一致,但是提交的时候报错:Runtime Error Message:
Line 3: execution reached the end of a value-returning function without returning a value
Last executed input:
[1,3,5,6]
7
原因分析:代码针对上述输入没有输出结果,因此报错。
修改:上述代码写的太冗余了,每种情况都要提前考虑好,因此难免会有遗漏的情况,所以改为如下代码,且成功提交:
int searchInsert(vector<int>& nums, int target)
{
int count=nums.size();
int i,output,sum=0;
for(i=0;i<count;i++)
{
if(target<=nums[i])
{
output=i;
sum++;
break;
}
}
if(sum==0)
output=count;
return output;
}
思路就是把target的值逐个和vector中的值进行比较,如果找到该元素就直接退出循环,如果在vector中没有找到该元素就返回Vector的大小