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;
}
};
本文介绍了一个使用C++实现的算法,用于从数组中移除指定值的所有实例,并返回更新后的数组长度。通过将后续元素前移一位,该算法能够原地操作数组,而无需额外的内存分配。
522

被折叠的 条评论
为什么被折叠?



