一、删除数组中的重复项【无序】
<?php
/**
* 给定一个数组(无序),你需要在原地删除重复出现的元素,使得每个元素只出现一次,
* 返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
* @param array $list
* @return array new list
*/
function arrayUniqueFilterNoSort($list){
$length = count($list);
$count = $index = 0;
for($i=1; $i<$length; $i++){
for($j=0; $j<$index+1; $j++){
if($list[$i] == $list[$j]){
break;
}
if($j == $index){
$index += 1;
$list[$index] = $list[$i];
}
}
}
$list = array_slice($list, 0, $index);
return $index;
}
$list = [4,1,2,2,3,1,5];
echo arrayUniqueFilterNoSort($list);
二、删除数组中的重复项【排序】
<?php
/**
* 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,
* 返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
* @param array $list
* @return array new list
*/
function arrayUniqueFilterSort($list){
$length = count($list);
$count = $index = 0;
for($i=1; $i<$length; $i++){
if($list[$i] != $list[$index]){
$index += 1;
$list[$index] = $list[$i];
}
}
$list = array_slice($list, 0, $index);
return $index;
}
$list = [1,2,2,3,4,4,5];
echo arrayUniqueFilterSort($list);