天天看點

删除數組中的所有值為x的元素,時間複雜度o(n)、空間複雜度o(1)

順序表的資料結構

typedef struct{
	int  data[maxsize];
	int length;
}SqList;
           

實作數組内删除所有的x元素

void DeleteAllX(SqList &l, int x){
	int k=0;								//記錄數組中與x相等的元素的個數
	for(int i=0; i<l.length; i++){
		if(l.data[i]  == x)	k++;			//如果目前元素等于x,則K+1;
		else	l.data[i-k] = l.data[i];		//目前元素不等于x,則将目前元素向前移動x個位置。向前移動x位置就是删除了x個相同的x元素
	}
	l.length -= k;							//重新更新數組的長度。
	return ;
}
           

算法的時間複雜度,空間複雜度

時間複雜度:O(n)
空間複雜度:O(1)