用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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM