二分查找(不同区间方式对应不同写法)
1.左闭右闭
while(left <= right)
if(middle > target){
right = middle -1
}
if(middle < target){
left = middle +1
}
2.左闭右开
while(left < right)
if(middle > target){
right = middle
}
if(middle < target){
left = middle +1
}
全部采用这两种区间。
移除元素
双指针法(方法很快)
双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
定义快慢指针
- 快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组
- 慢指针:指向更新 新数组下标的位置
class Solution { public int removeElement(int[] nums, int val) { int size = 0; int slow = 0; for (int fast = 0; fast < nums.length; fast++) { if (nums[fast] != val) { nums[slow] = nums[fast]; size ++; slow++; } } return size; } }