Skip to content

Commit cb27df4

Browse files
committed
Add: Remove Duplicates from Sorted List
1 parent 34ba59d commit cb27df4

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,21 @@
11
package remove_duplicates_from_sorted_list
2+
3+
import . "github.com/openset/leetcode/internal/kit"
4+
5+
/**
6+
* Definition for singly-linked list.
7+
* type ListNode struct {
8+
* Val int
9+
* Next *ListNode
10+
* }
11+
*/
12+
func deleteDuplicates(head *ListNode) *ListNode {
13+
for prev, t := head, head; t != nil; t = t.Next {
14+
if prev.Val == t.Val {
15+
prev.Next = t.Next
16+
} else {
17+
prev = t
18+
}
19+
}
20+
return head
21+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,36 @@
11
package remove_duplicates_from_sorted_list
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
7+
. "github.com/openset/leetcode/internal/kit"
8+
)
9+
10+
type caseType struct {
11+
input []int
12+
expected []int
13+
}
14+
15+
func TestDeleteDuplicates(t *testing.T) {
16+
tests := [...]caseType{
17+
{
18+
input: []int{1, 1, 2},
19+
expected: []int{1, 2},
20+
},
21+
{
22+
input: []int{1, 1, 2, 3, 3},
23+
expected: []int{1, 2, 3},
24+
},
25+
{
26+
input: []int{0, 0, 1, 1, 2, 2},
27+
expected: []int{0, 1, 2},
28+
},
29+
}
30+
for _, tc := range tests {
31+
output := deleteDuplicates(SliceInt2ListNode(tc.input))
32+
if !reflect.DeepEqual(ListNode2SliceInt(output), tc.expected) {
33+
t.Fatalf("input: %v, output: %v, expected: %v", tc.input, output, tc.expected)
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)