class Solution
{
public:
int searchInsert(vector& nums, int target)
{
int ans;
int n = nums.size();
int left = 0;
int right = n - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (target =nums[mid])
{
return mid;
}
if (target <=nums[mid])
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
return 0;
}
};
==和=的区别。if (target =nums[mid])应该用双等号,否则一定是True。
最开始int mid = left + (right - left) / 2;这一句等于1,然后直接就返回了。
这也就是为什么你的程序会返回1
题目是什么?
if (target =nums[mid])错了,应该是==
if (target =nums[mid])
{
return mid;
}
if (target <=nums[mid])
{
right = mid - 1;
}
else
{
left = mid + 1;
}
这一部分应该改成:
if (target ==nums[mid])
{
return mid;
}
else if (target <nums[mid])
{
right = mid - 1;
}
else
{
left = mid + 1;
}