一、题目
二、思路
依旧和上一题的双指针类似,设置变量k,前移k个单位。
三、题解
1.自己初步尝试
代码如下:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int k = 0;
for(int i = 0; i < nums.size(); i++){
if(nums[i] == val){
k++;
continue;
}
nums[i-k] = nums[i];
}
return nums.size() - k;
}
};
2.看题解后尝试
代码如下:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int j = nums.size() - 1;
for (int i = 0; i <= j; i++) {
if (nums[i] == val) {
swap(nums[i--], nums[j--]);
}
}
return j + 1;
}
};
作者:宫水三叶
链接:https://leetcode.cn/problems/remove-element/solutions/1/shua-chuan-lc-shuang-bai-shuang-zhi-zhen-mzt8/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
双指针解法,此处不过多赘述了。
总结
该题方法同上一题类似,可以参考。
力扣算法题26-删除有序数组中的重复项