diff --git a/leetcode/0080.Remove-Duplicates-from-Sorted-Array-II/80. Remove Duplicates from Sorted Array II.go b/leetcode/0080.Remove-Duplicates-from-Sorted-Array-II/80. Remove Duplicates from Sorted Array II.go index ae6e64c5..bb0ddd2b 100644 --- a/leetcode/0080.Remove-Duplicates-from-Sorted-Array-II/80. Remove Duplicates from Sorted Array II.go +++ b/leetcode/0080.Remove-Duplicates-from-Sorted-Array-II/80. Remove Duplicates from Sorted Array II.go @@ -1,35 +1,12 @@ 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 +func removeDuplicates(nums []int) int { + slow := 0 + for i, v := range nums { + if i < 2 || nums[slow-2] != v { + nums[slow] = v + slow++ } } - return last + 1 + return slow } diff --git a/leetcode/0080.Remove-Duplicates-from-Sorted-Array-II/80. Remove Duplicates from Sorted Array II_test.go b/leetcode/0080.Remove-Duplicates-from-Sorted-Array-II/80. Remove Duplicates from Sorted Array II_test.go index f64d4c86..76939aab 100644 --- a/leetcode/0080.Remove-Duplicates-from-Sorted-Array-II/80. Remove Duplicates from Sorted Array II_test.go +++ b/leetcode/0080.Remove-Duplicates-from-Sorted-Array-II/80. Remove Duplicates from Sorted Array II_test.go @@ -61,7 +61,7 @@ func Test_Problem80(t *testing.T) { for _, q := range qs { _, p := q.ans80, q.para80 - fmt.Printf("【input】:%v 【output】:%v\n", p.one, removeDuplicates80(p.one)) + fmt.Printf("【input】:%v 【output】:%v\n", p.one, removeDuplicates(p.one)) } fmt.Printf("\n\n\n") } diff --git a/website/content/ChapterFour/0001~0099/0080.Remove-Duplicates-from-Sorted-Array-II.md b/website/content/ChapterFour/0001~0099/0080.Remove-Duplicates-from-Sorted-Array-II.md index 4bec7529..c351d1d1 100644 --- a/website/content/ChapterFour/0001~0099/0080.Remove-Duplicates-from-Sorted-Array-II.md +++ b/website/content/ChapterFour/0001~0099/0080.Remove-Duplicates-from-Sorted-Array-II.md @@ -67,38 +67,15 @@ for (int i = 0; i < len; i++) { 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 +func removeDuplicates(nums []int) int { + slow := 0 + for i, v := range nums { + if i < 2 || nums[slow-2] != v{ + nums[slow] = v + slow ++ } } - return last + 1 + return slow }