用C++實現:數列中整數去重
阿新 • • 發佈:2020-07-15
牛客程式語言練習賽第八場 題號G
題目描述:
輸入n個整數的序列,要求對這個序列進行去重操作。所謂去重,是指對這個序列中每個重複出現的整數,只保留該數第一次出現的位置,刪除其餘位置。
輸入描述:
輸入包含兩行,第一行包含一個正整數n(1 ≤ n ≤ 1000),表示第二行序列中數字的個數;第二行包含n個整數(範圍1~5000),用空格分隔。
輸出描述:
輸出為一行,按照輸入的順序輸出去重之後的數字,用空格分隔。
樣例:
輸入:
5
10 12 93 12 75
輸出:
10 12 93 75
思路:邊輸入邊檢查是否有重複資料。首先輸入a[i],再套一層迴圈,將a[i]與陣列前面的值相比較,若有重複,就要將新輸入的資料a[i]去掉,也就是將i減1,且n也因為去掉了一個重複的資料而要減1,那麼進入下一次迴圈時下一個值可直接將目前的a[i]覆蓋,輸出時次數也不用再去調整,直接是1到n,以此類推。
1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 int n; 6 cin>>n; 7 int *a=new int[n+1]; 8 for(int i=1;i<=n;i++) 9 { 10 cin>>a[i]; 11 for(int j=1;j<i;j++) 12 { 13 if(a[j]==a[i]) 14 {15 i=i-1; 16 n=n-1; 17 } 18 } 19 } 20 for(int i=1;i<n;i++) 21 { 22 cout<<a[i]<<" "; 23 } 24 cout<<a[n]; 25 delete[]a; 26 return 0; 27 }