


Do not allocate extra space for another array. You need to do this by modifying the given input array in place with O(1) extra memory.
'n' = 5, 'arr' = [1 2 2 2 3].
The new array will be [1 2 3].
So our answer is 3.
The first line contains an integer ‘n’ denoting the number of elements in the array.
The second line contains ‘n’ space-separated integers representing the elements of the array.
Return the length of the modified array.
You don't need to print anything, it has already been taken care of. Just Implement the given function.
We know that the array is sorted, and hence all the occurrences of a number will be clustered together. Keeping this in mind, we keep two pointers 'i' and ‘j’, where ‘i’ is the slow pointer and ‘j’ is the fast pointer.
Now, as long as ‘arr[i]’ == ‘arr[j]’ -> we keep on incrementing ‘j’ to skip all the duplicates.
Now, when we encounter ‘arr[i]’ != ‘arr[j]’ -> the duplicate run ends, and hence now, we must copy the value of ‘arr[j]’ to ‘arr[i+1]’, ‘i’ is then incremented.
We repeat the same process until j reaches the end of the array. Return the value of ‘i’ at the end.