https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/description/?envType=study-plan-v2&envId=top-interview-150

 

go

package leetcode150

import "testing"

func TestRemoveDuplicates2(t *testing.T) {
    nums := []int{1, 1, 1, 2, 2, 3}
    res := removeDuplicates22(nums)
    println(res)
    for i, num := range nums {
        if i < res {
            print(num)
            print(" ")
        }
    }
    println()
    for _, num := range nums {
        print(num)
        print(" ")
    }
}

func removeDuplicates22(nums []int) int {
    if len(nums) <= 2 {
        return len(nums)
    }

    i := 1
    j := i + 1
    for j < len(nums) {
        if nums[j] == nums[i-1] && nums[j] == nums[i] {
            j++
        } else {
            i++
            nums[i] = nums[j]
            j++
        }
    }

    return i + 1
}

java

package leetcode150;

import org.junit.Test;

public class a4_80_removeDuplicates_2 {

    @Test
    public void testRemoveDuplicates_2(){
        int[] nums = {1, 1, 1, 2, 2, 3};
        int res = removeDuplicates(nums);
        System.out.println(res);
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i]+" ");
        }
    }

    public int removeDuplicates(int[] nums) {
        if (nums.length < 2) {
            return nums.length;
        }

        int i = 1;
        int j = i + 1;

        while (j < nums.length) {
            if (nums[j] == nums[i] && nums[j] == nums[i - 1]) {
                j++;
            } else {
                i++;
                nums[i] = nums[j];
                j++;
            }
        }
        return i + 1;
    }
}