アイデア:
2つの配列の使用、A [] ARRは、別の配列Bのすべての要素を格納するために繰り返さ[]添字の値に対応する時間の配列番号が発生し、ARR要素のインデックス値です。時間計算量はO(N)であります
なお、 Bは[]オーバーフロー値は、2つの隣接アレイ素子間の動的な差は、次に発生した場合ので、静的配列を適用するために必要な、動的配列[]必要に応じて、要素の数は、同時にすべての要素が不確実に有効であるので出力、トラバースへの直接出力します。
1の#include <iostreamの> 2の#include <ベクトル> 3 使用して 名前空間をSTD。 4 の#define MAXSIZE 100 5 6 int型 B [MAXSIZE] = { 0 }。 7ベクター< INT > A。 8 int型 ARR [ 5 ] = { 1、4、3、1、4 }。 9 10 ボイド反復(INT * ARR、INT N){ 11 のために(INTI = 0 ; I <N; I ++ ){ 12 B [ARR [I]] ++ ; 13 } 14 のために(INT iが= 0 ; I <MAXSIZEは、I ++ ){ 15 であれば(B [i]が> 1 ) 16 a.push_back(I)。 17 } 18 } 19 20 、INT (){主 21 リピート(ARR、5 )。 22 のために(INTは iは= 0 ; I <a.size(); I ++ ) 23 COUT << [I] <<" " ; 24 リターン 0 ; 25 }