有序数组去重算法
有序数组去重算法的复杂度是O(n)。
代码如下,只进行一次循环,复杂度O(n)
完整代码在github上面,只需要clone下来执行composer install
然后执行 php artisan test:sortDeduplicate
就可以看到结果了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
public function handle() { $a = [3,4,4,4,5,6,6,8,10,10,34]; dump($a); $i = 0;$j=0; $len = count($a); dump("长度:".$len); while ((++$j) < $len) { if($a[$i] != $a[$j]) { $a[++$i] = $a[$j]; } } $a = array_slice($a, 0, ++$i); dd($a); }
|