美文网首页
removeDuplicates(数组)

removeDuplicates(数组)

作者: 瞬铭 | 来源:发表于2019-09-25 14:53 被阅读0次

给定一个排序好的数组,去除重复的值

  • remove 1

https://leetcode.com/problems/remove-duplicates-from-sorted-array/

    /**
     * @param Integer[] $nums
     * @return Integer
     */
    function removeDuplicates(&$nums) {
                $i = 0;
        $j = 0;
        while ($j < count($nums)) {
            if ($nums[$i] == $nums[$j]) {
                $j++;
            }else{
                $i++;
                $nums[$i] = $nums[$j];
                $j++;
            }
        }
        return $i + 1;
    }
  • remove 2

https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/submissions/
有点变种,每个数据可以冗余最多两个在数组中
举例:Given nums = [1,1,1,2,2,3],
Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3 respectively.

        int i = 0, j = 1, cnt = 1;

        if (nums.length <= 2) {
            return nums.length;
        }
        while (j < nums.length) {
            //虽然i和j的值相等,但是由于相等的总数已经到2了,所以继续把j++
            if ((nums[i] == nums[j]) && cnt == 2) {
                j++;
            } else {//请注意,在这个else里面,无论如何i和j都需要往后移一位
                
                if (nums[i] == nums[j]) {
                    //此时i和j的值相等,但是总数没到2,所以直接把cnt+1
                    cnt++;
                } else {
                    //此时i和j的值不相等,切总数也没达到2,所以这是的j是第一次出现
                    cnt = 1;
                }
                
                i++;
                nums[i] = nums[j];
                j++;
            }
        }
        return i + 1;

相关文章

网友评论

      本文标题:removeDuplicates(数组)

      本文链接:https://www.haomeiwen.com/subject/lptbyctx.html