D136 26. Remove Duplicates from Sorted Array

题目链接

26. Remove Duplicates from Sorted Array

题目分析

给定一个已经排好序的数组,其中的整数会出现重复。需要在不增加内存的情况下移除重复的元素。即不要新建数组。

注意,最后需要返回的是不重复的元素个数。

注意2,参数是以引用型传过来的。

解题思路

逐个遍历元素,先直接把当前元素从数组中移除。

当当前元素和前一个元素不相同时,做3件事情:

  1. 在原数组中插入这个不重复的元素。
  2. 记录当前数字,即最后出现的数字。
  3. 把下次要插入数字的下标标记为当前下标+1

最终代码

<?php
class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer
     */
    function removeDuplicates(&$nums) {
        $index = 0;
        $prev = NULL;
        foreach($nums as $key => $num){
            unset($nums[$key]);
            if($num !== $prev){
                $nums[$index] = $num;
                $prev = $num;
                $index = $key + 1;
            }
        }
        return $index;
    }
}

若觉得本文章对你有用,欢迎用爱发电资助。


skys215
42 声望26 粉丝