搜索插入位置,有一个问题

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;
}
};

img


我知道我写的有问题,我想知道为什么这个测试用例,会输出为1,我认为无论如何他输出的都是2,来个大佬给我讲讲为什么会输出为1,我觉得极其不科学
输出用例1,3,5,6
力扣原题,可以去力扣编译器上试试
我怀疑人生了,c++

==和=的区别。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;
}