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

牛客編程語言練習賽第八場 題號G

題目描述:
輸入n個整數的序列,要求對這個序列進行去重操做。所謂去重,是指對這個序列中每一個重複出現的整數,只保留該數第一次出現的位置,刪除其他位置。ios

輸入描述:編程

輸入包含兩行,第一行包含一個正整數n(1 ≤ n ≤ 1000),表示第二行序列中數字的個數;第二行包含n個整數(範圍1~5000),用空格分隔。數組

輸出描述:編程語言

輸出爲一行,按照輸入的順序輸出去重以後的數字,用空格分隔。spa

樣例:code

輸入:blog

5
10 12 93 12 75ci

輸出:io

10 12 93 75class

思路:邊輸入邊檢查是否有重複數據。首先輸入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 }
相關文章
相關標籤/搜索