要求:时间复杂度为o(n)。
#include<iostream> using namespace std; void do_dup(int a[] , int n) { int *b = new int[n]; for( int i = 0 ; i != n ; ++i ) { b[i] = -1 ; } for( int j = 0 ; j != n ; ++j ) { if( b[a[j]] == -1 ){ b[a[j]] = a[j] ; } else { cout << b[ a[j] ] << endl ; break ; } } } int main(){ int a[]={ 1 , 2 , 3 , 4 , 3 } ; do_dup( a , 5 ) ; }
#include<iostream> using namespace std; void do_dup(int a[] , int n) { int *b = new int[n]; for( int i = 0 ; i != n ; ++i ) { b[i] = -1 ; } for( int j = 0 ; j != n ; ++j ) { if( b[a[j]] == -1 ){ b[a[j]] = a[j] ; } else { cout << b[ a[j] ] << endl ; break ; } } } int main(){ int a[]={ 1 , 2 , 3 , 4 , 3 } ; do_dup( a , 5 ) ; }
O(N)时间复杂度去重示例
本文提供了一个C++实现的时间复杂度为O(N)的数组去重算法示例,通过使用辅助数组来记录已存在的元素,一旦发现重复元素即刻输出并终止程序。该方法适用于元素范围有限的情况。
1110

被折叠的 条评论
为什么被折叠?



