题目概述
给定数组nums和一个值val,你需要原地移除数组中所有等于val的值,不使用额外的数组空间,并且返回移除后新数组的长度。
题目分析
该题目内容理解起来比较简单,在原数组的基础上进行删减,组成新数组,与26题删除重复项算法相似。
思路
循环,数组,双指针
1.利用双指针i和j,如果nums[i]!=val,就说明找到了删除项,将num[i]的值赋给num[j]。从而达到了移除元素的目的
2.利用if语句和for循环语句,将原数组进行修改,删除等于val的数组元素,组成新数组,返回新数组的长度。
3.时间复杂度:O(n).
i 和 j 一共遍历2n步。
程序代码
public class Solution
{
public int RemoveElement(int[] nums, int val)
{
int j=0;
for(int i=0;i<nums.Length;i++)
{
if(nums[i]!=val)
{
nums[j]=nums[i]; j=j+1;
}
}
return j;
}
}