我觉得这个题好像有问题啊,预期结果不应该是 -1么,没查找到啊
在您提供的代码中,存在两个问题:
j
时,应将其设置为 nums.length - 1
,而不是 nums.length
。这是因为数组的索引是从 0 开始的,因此最后一个元素的索引应该是 nums.length - 1
。修改后的代码如下:int j = nums.length - 1;
i
,而不是 -1。修改后的代码如下:return i;
修复以上两个问题后,完整的代码如下:
public int searchInsert(int[] nums, int target) {
int i = 0, j = nums.length - 1;
while (i <= j) {
int m = (i + j) / 2;
if (target < nums[m]) {
j = m - 1;
} else if (nums[m] < target) {
i = m + 1;
} else {
return m;
}
}
return i;
}
请注意,我还将 j
的更新修改为 j = m - 1
,以确保在目标元素不存在于数组中时,循环可以正确结束。
希望这能帮助您解决问题。