题意:

image.png

解题思路:

  1. 思路:111223
  2. 1. 每个元素最多出现两次,所以可以从第三个元素开始比较;
  3. 2. 因为第三个元素跟第一个元素差等于2,所以可以判断是否相等;
  4. 2.1 如果不相等,表示第三个位置的元素跟前两个不相等,那么第三个位置为正确位置
  5. 2.2 如果相等,则后移指针,用第四个元素跟第一个比较,
  6. 第四个元素如果跟第一个不相等,则表示第四个为新元素,可以用第四个元素来代替第三个位置的重复元素;

PHP代码实现:

  1. class Solution {
  2. /**
  3. * @param Integer[] $nums
  4. * @return Integer
  5. */
  6. function removeDuplicates(&$nums) {
  7. $current = 1;
  8. for ($i = 2; $i < count($nums); $i++) {
  9. if ($nums[$i] != $nums[$current - 1]) {
  10. $current += 1;
  11. $nums[$current] = $nums[$i];
  12. }
  13. }
  14. return $current + 1;
  15. }
  16. }

GO代码实现:

  1. func removeDuplicates(nums []int) int {
  2. current := 1
  3. for i := 2; i < len(nums); i++ {
  4. if nums[i] != nums[current - 1] {
  5. current++
  6. nums[current] = nums[i]
  7. }
  8. }
  9. return current + 1
  10. }