代码存在几个问题:
1.写二分法,区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right),若选择左闭右闭,
- while (left <= right) 要使用 <= ,因为left == right是有意义的;
- if (nums[middle] > target) ,当前这个nums[middle]一定不是target,那么接下来right 要赋值为 middle - 1;if (nums[middle] < target)同理,left要赋值为 middle + 1.
2.mid应该定义在while循环内,随left,right值变化。
正确代码:
移除元素: