LeetCode刷題(10)--移除元素
阿新 • • 發佈:2021-01-29
題目描述
給你一個數組 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。