分析:利用双指针。后记 i 指针循环遍历整个数组,前记 index 指针标注跟 val 相同的数组元素。其实**原理是当前记指针和后记指针指向元素不相等的话,前记指针和后记指针都移动,那么就是在相同位置上的赋值;相等的话,就只是后记指针在移动,后记指针指向的值就会赋值给前记指针**
- val 跟后记指针 i 作比较
- 假如指向元素相同,则后记指针 i 后移
- 假如不相同,则后记指针 i 指向的值赋值给前记指针 index 指向的值,前记指针 index 和后记指针 i 都后移一位
代码
class Solution {
public int removeElement(int[] nums, int val) {
int index = 0;
for(int i = 0; i < nums.length; i++)
{
if(nums[i] != val)
{
nums[index] = nums[i];
index++;
}
}
return index;
}
}