1. 概述

给定一个增序排列数组 nums ,在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。在使用 O(1) 额外空间的条件下完成。

示例: 输入:nums = [1,1,1,2,2,3] 输出:5 nums = [1,1,2,2,3]

2. 解题

  1. <?php
  2. class Solution {
  3. /**
  4. * @param Integer[] $nums
  5. * @return Integer
  6. */
  7. public function removeDuplicates(&$nums) {
  8. if (!$nums) {
  9. return 0;
  10. }
  11. $sum = 1;
  12. $key = $nums[0];
  13. $count = 1;
  14. for ($i = 1; $i < count($nums); $i++) {
  15. if ($nums[$i] == $key) {
  16. $sum++;
  17. $count++;
  18. if ($count > 2) {
  19. unset($nums[$i]);
  20. }
  21. } else {
  22. $sum++;
  23. $key = $nums[$i];
  24. $count = 1;
  25. }
  26. }
  27. return $sum;
  28. }
  29. }
  30. $nums = [0,0,1,1,1,1,2,3,3];
  31. $cls = new Solution();
  32. $r = $cls->removeDuplicates($nums);
  33. echo implode(',', $nums) . "\n";
  34. echo $r;