Today's problem was a little bit similar to yesterday's. In today's problem, we are asked to remove a specific element, not duplicated element, and the array isn't sorted like yesterday's. You can find the problem description here.

Here are two scenarios to show how the program needs to work:

Scenario 1:

Input: nums = [3,2,2,3], val = 3
Output: 2, nums = [2,2,_,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 2.
It does not matter what you leave beyond the returned k (hence they are underscores).

Scenario 2:

Input: nums = [0,1,2,2,3,0,4,2], val = 2
Output: 5, nums = [0,1,4,0,3,_,_,_]
Explanation: Your function should return k = 5,
with the first five elements of nums containing 0, 0, 1, 3, and 4.
Note that the five elements can be returned in any order.
It does not matter what you leave beyond the returned k (hence they are underscores).

My solution

My intuition is straightforward. I hold two counters; one counts elements that are not equal to the value from front to back, and the other counts the occurrences of the value from back to front, and I stop the loop when they meet somewhere in the middle. I am holding two counters because I can replace the occurrences of the value from the front with the elements that are not equal to the value from the back.

Results

The results are pretty good,

Runtime: 32 ms, faster than 96.76% of Python3 online submissions for Remove Element.

Memory Usage: 13.9 MB, less than 14.38% of Python3 online submissions for Remove Element.

And I am excited about tomorrow's challenge!