Given an array of integers and a target value, move all instances of that target value to the end end of the array. The order of the resulting array does not matter in this question.
left pointer is intialized to the
0th index. The
right pointer is initialized to the last index of the array.
left pointer is to check if the value at the
left index is EQUAL to the
left < right. If
arr[left] is equal to the target value - This means we found a target value that needs to be at the end of the array.
right pointer initialized to the end of the array, we swal the
arr[right] values. Essentially taking the target value at the end. After swapping, we
decrement the right pointer, because we might encounter more such target values that need to be at the end.
left value is not equal to the
target value, we simply increment the left pointer.
O(n) Since we are iterating the array only once.