代码随想录第一天 2023.7.12
题目链接:
27. 移除元素 - 力扣(Leetcode)https://leetcode.cn/problems/remove-element/考查知识点:数组,指针
一、暴力求解法
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int size=nums.size();
for(int i=0;i<nums.size();i++){
if(nums[i]==val){
for(int j=i+1;j<nums.size();j++){
nums[j-1]=nums[j];
}
i--;
size--;
}
}
return size;
}
};
暴力求解法会超时
二、双指针法
代码如下:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int slow=0;
for(int fast=0;fast<nums.size();fast++){
if(nums[fast]!=val){
nums[slow++]=nums[fast];
}
}
return slow;
}
};
需要注意的是:
1.理解快慢指针的含义:
快指针指向新数组(移除元素后)所需要的元素,慢指针指向新数组中需要更新的位置;
2.if循环用于更新数组中元素的操作。