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.
C++ Code:
/* * func: remove_element * goal: remove all elements of a given value in the array * @param A: integer array A * @param n: the size of the array * @param elem: target element */ int remove_element(int A[], int n, int elem){ if(n <= 0){ return n; }else{ int i = 0; int j = n-1; while(i <= j){ if(A[i] == elem){ while(A[j] == elem){ --j; } if(i > j){ break; } std::swap(A[i], A[j]); --j; }else{ ++i; } } return j+1; } }
Python Code:
# func: remove all elements of a given value in the list # @param A: the given list # @param elem: target value # @return: the new length of the list def remove_list(A, elem): end = len(A) - 1 for i in xrange(len(A)): if A[i] == elem: while end >= 0 and A[end] == elem: end -= 1 if i >= end: break A[i] = A[end] A[end] = elem return end+1
No comments:
Post a Comment