1. 程式人生 > >JSK 11: 移除數組中的重復元素

JSK 11: 移除數組中的重復元素

names sizeof 一個 range ostream 配額 block queue algo

給定一個升序排列的數組,去掉重復的數,並輸出新的數組的長度。 例如:數組 $A = \{1, 1, 2\}$,你的程序應該輸出 $2$ 即新數組的長度,新數組為 $\{1, 2\}$。 要求:不能新開數組分配額外的空間,即常數空間限制。 輸入一個整數 $n(1 \leq n \leq 1000)$。 接下來一行 $n$ 個整數 $A_i(-1000 \leq A_i \leq 1000)$,表示數組 $A$ 中的每個元素。 輸出一個整數,表示新數組長度。 技術分享圖片
#include <iostream>
#include 
<string> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <deque> #include <map> #define range(i,a,b) for(int i=a;i<=b;++i) #define LL long long #define rerange(i,a,b) for(int i=a;i>=b;--i) #define
fill(arr,tmp) memset(arr,tmp,sizeof(arr)) using namespace std; map<int,bool>nn; int n; void init(){ cin>>n; while(n--){ int tmp; cin>>tmp; nn[tmp]=true; } } void solve(){ int ans=0; map<int,bool>::iterator iter; for(iter=nn.begin();iter!=nn.end();++iter)ans+=(iter->second?1
:0); cout<<ans<<endl; } int main() { init(); solve(); return 0; }
View Code

JSK 11: 移除數組中的重復元素