Given an array and a value, remove all instances of that value in place and return the new length.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
http://oj.leetcode.com/problems/remove-element/
Solution:
We cannot just count the number of int that is not the value in the array for the problem needs us to remove them in place.
The OJ system will check the result of the new array. So we need to move all the elements after the target one position. In my solution, [1, 2, 3, 4, 5] with target 3 would become [1, 2, 4, 5, 5].
https://github.com/starcroce/leetcode/blob/master/remove_element.cpp
// 16 ms for 112 test cases
// Given an array and a value, remove all instances of that value in place and return the new length.
class Solution {
public:
int removeElement(int A[], int n, int elem) {
// Note: The Solution object is instantiated only once and is reused by each test case.
int length = 0;
for(int i = 0; i < n; i++) {
if(A[i] != elem) {
A[length] = A[i];
length++;
}
}
return length;
}
};