class Solution {
public int removeElement(int[] nums, int val) {
int flag = 0;
for (int i = 0; i < nums.length; i++) {
if(nums[i] == val){
continue;
}
else {
nums[flag] = nums[i];
flag++;
}
}
return flag;
}
}
对数组进行重新排序,当遇到任何一个不等于目标值的数组元素,即按顺序重新放入数组,便可完成题目要求。
双指针法:通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
快慢指针法是解决数组等问题的一个常用方法。基本没自主想到过这种做法,可以加深印象。
class Solution {
public int removeElement(int[] nums, int val) {
int slow = 0;
for(int fast = 0; fast < nums.length; fast++)
{
if(nums[fast] != val){
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
突然发现两种方法是等价的,可以留作纪念。