1. 程式人生 > 實用技巧 >用C++實現:數列中整數去重

用C++實現:數列中整數去重

牛客程式語言練習賽第八場 題號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 }