704 Pure binary search from int[] nums for int target
while(start <= end)
int mid = (start + end) /2;
if nums[mid] == target return mid
if nums[mid] > target , end = mid-1
if nums[mid] < target , start = mid + 1
return -1
27. remove element in an array, -> in -place
Input: nums = [3,2,2,3], val = 3 -> output new size 2 [2,2,_,_]
# slow, fast pointer
# move fast pointer to sweep all the elements in a while loop.
# slow point to record these elements that need to be kept, whenever fast pointer meets a needed element, copy nums[fast] to nums[slow] and slow++;
Code
int fast= 0, slow = 0;
while (fast < nums.length) {
if (nums[fast] !=val) nums[slow] = nums[fast] ; slow++;
fast++;
}