方法一:需要先排序
PHP实现:
function removeDuplicates(&$arr) {
sort($arr);
$j = 0;
$n = count($arr);
if($n <= 0) return;
for($i=1; $i<$n; ++$i) {
if($arr[$i] != $arr[$j]) {
$arr[++$j] = $arr[$i];
}
}
for($i=$j+1; $j<$n; ++$j) {
unset($arr[$i]);
}
}
C++实现:
void removeDuplicates(int* arr, int &n) {
if(n <= 0) return;
sort(arr, arr+n);
int j=0;
for(int i=1; i<n; ++i) {
if(arr[i] != arr[j]) {
arr[++j] = arr[i];
}
}
n = j+1;
}
方法二:HashMap法
void removeDuplicates(int* arr, int &n) {
if(n <= 0) return;
int k = 0;
int tn = 0;
map<int, bool> m;
for(int i=0; i<n; ++i) {
if(!m[arr[i]]) {
m[arr[i]] = true;
arr[k++] = arr[i];
tn++;
}
}
n = tn;
}