题目链接
暴力:(没有改变元素相对位置)
class Solution {
public int removeElement(int[] nums, int val) {
int len = nums.length;
for(int i = 0; i < len; i++){
if(nums[i] == val){
for(int j = i + 1; j < len; j++){
nums[j-1] = nums[j];
}
i--;
len--;
}
}
return len;
}
}
学习思想:双指针(没有改变元素相对位置),快慢指针重点要想好快慢指针分别代表什么
class Solution {
public int removeElement(int[] nums, int val) {
// 慢指针更新数组下标
int slow = 0;
// 快指针寻找新数组
for(int fast = 0; fast < nums.length; fast++){
if(val != nums[fast]){
nums[slow++] = nums[fast];
}
}
// 返回数组长度 = 下标 + 1,++过了
return slow;
}
}