原题写的挺绕的其实就是从一列数中删除某些元素,要求使用原地算法,就是直接替换数组元素,原理就是两个pointer xy,y碰到非目标元素就将个元素的值赋给x,结果如下:
Success
Runtime: 4 ms, faster than 100.00% of C++ online submissions for Remove Element.
Memory Usage: 8.5 MB, less than 100.00% of C++ online submissions for Remove Element.
代码:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int i=0;
for(int j=0;j<nums.size();j++){
if(nums[j]!=val){
nums[i]=nums[j];
i++;
}
}
return i;
}
};
当然也可以设置头尾两个指针,结果如下:
Success
Runtime: 4 ms, faster than 100.00% of C++ online submissions for Remove Element.
Memory Usage: 8.5 MB, less than 100.00% of C++ online submissions for Remove Element.
代码:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int i = 0;
int n = nums.size();
while (i < n) {
if (nums[i] == val) {
nums[i] = nums[n - 1];
n--;
} else {
i++;
}
}
return n;
}
};
扫描二维码关注公众号,回复:
5999464 查看本文章