这是一题基本的线性表的操作的题,《王道数据结构》上有这道题及解法(原题连接)
题目描述:
给定一个有序数组和一个值x,在该数组中删除所有值为x的元素,并返回最新的数组长度
算法思想:
从前往后扫描数组,找到给定值x后,计数x值的个数j,然后相应的将数组后面元素向前移动j,直到扫描完整个数组。
实现代码:
public class Main
{
public int removeElement(int[] nums,int val)
{
int i = 0,j = 0;
int len = nums.length;
while(i < nums.length)
{
if(nums[i] == val)
j++;
else
nums[i-j] = nums[i];
i++;
}
return len-j;
}
}
时间复杂度:O(n)
空间复杂度:O (1)