对长度为n的顺序表l编写一个时间复杂度为o(n),空间复杂度为o(1)的算法,该算法删除线性表中的所有值为x的数据元素。帮我只用这种解法来解:设头尾两个指针i=1,j=n,从两端向中间移动,在遇到最左端值x的元素时,直接将最右端直非x的元素左移至值为x的元素。直到两个指针相遇。
复杂度分析:
时间复杂度:该算法的时间复杂度为O(n),因为需要遍历整个顺序表。
空间复杂度:该算法的空间复杂度为O(1),因为只需要常数级别的额外空间。
int j = 0;
for (int i = 0; i < L.length; i++)
{
if (L.data[i] == x)
{
continue;
}
else
{
L.data[j] = L.data[i];
j++;
}
}