1. 程式人生 > 其它 >LeetCode刷題(10)--移除元素

LeetCode刷題(10)--移除元素

技術標籤:刷題!!!leetcode演算法陣列

題目描述

給你一個數組 nums 和一個值 val,你需要原地移除所有數值等於val的元素,並返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須僅使用 O(1) 額外空間並原地修改輸入陣列。

元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。

示例:
給定 nums = [3,2,2,3], val = 3,
函式應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。

示例:
給定 nums = [0,1,2,2,3,0,4,2], val = 2,
函式應該返回新的長度 5, 並且 nums 中的前五個元素為 0, 1, 3, 0, 4。

注意這五個元素可為任意順序。

解題思路

int Remove(int num[],int n,int val)
{
	int size=0;
	for(int i=0;i<n;i++)
	{
		if(num[i]!=val)
		{
			num[size++]=num[i];
		}
	}
	return size;
}
int main()
{
	int a[4]={3,2,2,3};
	cout<<Remove(a,4,3)<<endl;
	cout<<"第一個元素為:"<<a[0]<<endl;
	cout<<"第二個元素為:"<<a[1]<<endl;
	return 0;
}

結果:
在這裡插入圖片描述
分析:
陣列為{3,2,2,3}時:
1.當i=0時,num[0]=3=val。
2.當i=1時,num[1]=2!=val,num[1]=2。
3.當i=2時,num[2]=2!=val,num[2]=2。
4.當i=3時,num[3]=3=val。
所以刪除後的陣列的前兩個元素都為2。