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; } }