mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-05 00:25:22 +08:00
36 lines
711 B
Go
36 lines
711 B
Go
package leetcode
|
|
|
|
func removeDuplicates80(nums []int) int {
|
|
if len(nums) == 0 {
|
|
return 0
|
|
}
|
|
last, finder := 0, 0
|
|
for last < len(nums)-1 {
|
|
startFinder := -1
|
|
for nums[finder] == nums[last] {
|
|
if startFinder == -1 || startFinder > finder {
|
|
startFinder = finder
|
|
}
|
|
if finder == len(nums)-1 {
|
|
break
|
|
}
|
|
finder++
|
|
}
|
|
if finder-startFinder >= 2 && nums[finder-1] == nums[last] && nums[finder] != nums[last] {
|
|
nums[last+1] = nums[finder-1]
|
|
nums[last+2] = nums[finder]
|
|
last += 2
|
|
} else {
|
|
nums[last+1] = nums[finder]
|
|
last++
|
|
}
|
|
if finder == len(nums)-1 {
|
|
if nums[finder] != nums[last-1] {
|
|
nums[last] = nums[finder]
|
|
}
|
|
return last + 1
|
|
}
|
|
}
|
|
return last + 1
|
|
}
|