Remove Duplicates from Sorted Array II
Problem statement
nums is sorted non-decreasing. Rewrite it in place so no value appears more than twice, preserve order, and return the new logical length.
Example:
Input:
nums = [1, 1, 1, 2, 2, 3]
Expected output:
length 5, nums begins [1, 1, 2, 2, 3, ...]
Practice on LeetCode: Remove Duplicates from Sorted Array II
Golang Solution
func removeDuplicates(nums []int) int {
if len(nums) <= 1 {
return len(nums)
}
countMap := make(map[int]int, 0)
i, j := 0, 0
for i < len(nums) && j < len(nums) {
if res, ok := countMap[nums[j]]; ok {
if res < 2 {
countMap[nums[j]] += 1
nums[i] = nums[j]
i += 1
}
} else {
countMap[nums[j]] = 1
nums[i] = nums[j]
i += 1
}
j += 1
}
return i
}
