Skip to content

Commit 44c68a3

Browse files
committed
update 80
1 parent 6d2d38e commit 44c68a3

File tree

3 files changed

+15
-61
lines changed

3 files changed

+15
-61
lines changed
Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,12 @@
11
package leetcode
22

3-
func removeDuplicates80(nums []int) int {
4-
if len(nums) == 0 {
5-
return 0
6-
}
7-
last, finder := 0, 0
8-
for last < len(nums)-1 {
9-
startFinder := -1
10-
for nums[finder] == nums[last] {
11-
if startFinder == -1 || startFinder > finder {
12-
startFinder = finder
13-
}
14-
if finder == len(nums)-1 {
15-
break
16-
}
17-
finder++
18-
}
19-
if finder-startFinder >= 2 && nums[finder-1] == nums[last] && nums[finder] != nums[last] {
20-
nums[last+1] = nums[finder-1]
21-
nums[last+2] = nums[finder]
22-
last += 2
23-
} else {
24-
nums[last+1] = nums[finder]
25-
last++
26-
}
27-
if finder == len(nums)-1 {
28-
if nums[finder] != nums[last-1] {
29-
nums[last] = nums[finder]
30-
}
31-
return last + 1
3+
func removeDuplicates(nums []int) int {
4+
slow := 0
5+
for i, v := range nums {
6+
if i < 2 || nums[slow-2] != v {
7+
nums[slow] = v
8+
slow++
329
}
3310
}
34-
return last + 1
11+
return slow
3512
}

leetcode/0080.Remove-Duplicates-from-Sorted-Array-II/80. Remove Duplicates from Sorted Array II_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func Test_Problem80(t *testing.T) {
6161

6262
for _, q := range qs {
6363
_, p := q.ans80, q.para80
64-
fmt.Printf("【input】:%v 【output】:%v\n", p.one, removeDuplicates80(p.one))
64+
fmt.Printf("【input】:%v 【output】:%v\n", p.one, removeDuplicates(p.one))
6565
}
6666
fmt.Printf("\n\n\n")
6767
}

website/content/ChapterFour/0001~0099/0080.Remove-Duplicates-from-Sorted-Array-II.md

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -67,38 +67,15 @@ for (int i = 0; i < len; i++) {
6767

6868
package leetcode
6969

70-
func removeDuplicates80(nums []int) int {
71-
if len(nums) == 0 {
72-
return 0
73-
}
74-
last, finder := 0, 0
75-
for last < len(nums)-1 {
76-
startFinder := -1
77-
for nums[finder] == nums[last] {
78-
if startFinder == -1 || startFinder > finder {
79-
startFinder = finder
80-
}
81-
if finder == len(nums)-1 {
82-
break
83-
}
84-
finder++
85-
}
86-
if finder-startFinder >= 2 && nums[finder-1] == nums[last] && nums[finder] != nums[last] {
87-
nums[last+1] = nums[finder-1]
88-
nums[last+2] = nums[finder]
89-
last += 2
90-
} else {
91-
nums[last+1] = nums[finder]
92-
last++
93-
}
94-
if finder == len(nums)-1 {
95-
if nums[finder] != nums[last-1] {
96-
nums[last] = nums[finder]
97-
}
98-
return last + 1
70+
func removeDuplicates(nums []int) int {
71+
slow := 0
72+
for i, v := range nums {
73+
if i < 2 || nums[slow-2] != v{
74+
nums[slow] = v
75+
slow ++
9976
}
10077
}
101-
return last + 1
78+
return slow
10279
}
10380

10481

0 commit comments

Comments
 (0)