题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目就不贴了,点击上面链接即可
解析:
方法一:设立前后两个指针,若后指针遇到【不等于要删除的元素值】的【元素】则将【后指针元素的值】赋给【前指针的】。代码如下:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int length = nums.size();
int pre = 0;
int pos = 0;
for(;pos<length;pos++){
if(nums[pos] != val){
nums[pre++] = nums[pos];
}
}
return pre;
}
};
方法二:调用标准库函数,若当前位置元素值为要删除的,则删除之。
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
for(int i = 0;i<nums.size();i++){
if(nums[i] == val){
nums.erase(nums.begin()+i);
i--;
}
}
return nums.size();
}
};
注:上述两个方法耗时与内存占用相同,如下: