力扣题目链接:27. 移除元素 - 力扣(LeetCode)
运用双指针的思想
c++版
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int left = 0;//left为左指针,i为右指针
for (int i = 0; i < nums.size(); i++) {
if (nums[i] != val) {
nums[left] = nums[i];
left++;
}
}
return left;
}
};
以nums = [3,2,2,3], val = 3为例
第一次循环结束left = 0,nums = [3,2,2,3] (因为nums[i]=val所以left不变)
第二次循环结束left = 1,nums = [2,2,2,3]
第三次循环结束left = 2,nums = [2,2,2,3]
第四次循环结束left = 2,nums = [2,2,2,3] (因为nums[i]=val所以left不变)
java版
class Solution {
public int removeElement(int[] nums, int val) {
int left=0;//left为左指针,i为右指针
for(int i=0;i<nums.length;i++){
if(nums[i]!=val){
nums[left]=nums[i];
left++;
}
}
return left;
}
}
初学者,见解不足,如有错误请指出