Skip to content

Commit 6918886

Browse files
authored
83 solved. (#42)
1 parent 9f0f145 commit 6918886

File tree

4 files changed

+75
-0
lines changed

4 files changed

+75
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ continually updating 😃.
6060
* [25. Reverse Nodes in k-Group](./src/0025_reverse_nodes_in_k_group/reverse_node_k_group.go)
6161
* [61. Rotate List](./src/0061_rotate_list/rotate_list.go)
6262
* [82. Remove Duplicates from Sorted List II](src/0082_remove_duplicates_from_sorted_list_2/rdfsl.go)
63+
* [83. Remove Duplicates from Sorted List](src/0083_remove_duplicates_from_sorted_list/rdfsl.go)
6364

6465
### Dynamic Programming
6566
* [62. Unique Paths](./src/0062_unique_paths/unique_paths.go)   *`array`*
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
83. Remove Duplicates from Sorted List
3+
https://leetcode.com/problems/remove-duplicates-from-sorted-list/
4+
5+
Given a sorted linked list, delete all duplicates such that each element appear only once.
6+
*/
7+
8+
package rdfsl
9+
10+
// ListNode Definition for singly-linked list.
11+
type ListNode struct {
12+
Val int
13+
Next *ListNode
14+
}
15+
16+
// time complexity: O(n)
17+
// space complexity: O(1)
18+
func deleteDuplicates(head *ListNode) *ListNode {
19+
if head == nil || head.Next == nil {
20+
return head
21+
}
22+
23+
var (
24+
pre = head
25+
cur = head.Next
26+
)
27+
28+
for cur != nil {
29+
if cur.Val == pre.Val {
30+
pre.Next = cur.Next
31+
cur = cur.Next
32+
} else {
33+
pre = cur
34+
cur = cur.Next
35+
}
36+
}
37+
return head
38+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package rdfsl
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
)
7+
8+
func createSingleLinkedList(nums []int) *ListNode {
9+
head := &ListNode{}
10+
cur := head
11+
12+
for _, num := range nums {
13+
cur.Next = &ListNode{Val: num}
14+
cur = cur.Next
15+
}
16+
return head.Next
17+
}
18+
19+
func TestDeleteDuplicates(t *testing.T) {
20+
testCases := []*ListNode{
21+
createSingleLinkedList([]int{1, 1, 2}),
22+
createSingleLinkedList([]int{1, 1, 2, 3, 3}),
23+
nil,
24+
}
25+
expected := []*ListNode{
26+
createSingleLinkedList([]int{1, 2}),
27+
createSingleLinkedList([]int{1, 2, 3}),
28+
nil,
29+
}
30+
for index, head := range testCases {
31+
if res := deleteDuplicates(head); !reflect.DeepEqual(res, expected[index]) {
32+
t.Errorf("expected %v, got %v", expected[index], res)
33+
}
34+
}
35+
}

src/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
|0079|[79. Word Search](0079_word_search/word_search.go)|Medium|*`backtracking;`**`array`*|
4242
|0080|[80. Remove Duplicates from Sorted Array II](0080_remove_duplicates_from_sorted_array2/rdfsa2.go)|Medium|*`double index`*|
4343
|0082|[82. Remove Duplicates from Sorted List II](0082_remove_duplicates_from_sorted_list_2/rdfsl.go)|Medium|*`linked list`*|
44+
|0083|[83. Remove Duplicates from Sorted List](0083_remove_duplicates_from_sorted_list/rdfsl.go)|Easy|*`linked list`*|
4445
|0088|[88. Merge Sorted Array](0088_merge_sorted_array/msa.go)|Easy|*`sort`*|
4546
|0094|[Binary Tree Inorder Traversal](./0094_binary_tree_inorder_traversal/binary_tree_inorder_traversal.go)|Medium|*`binary tree`*|
4647
|0100|[Same Tree](./0100_same_tree/same_tree.go)|Easy|*`binary tree`*|

0 commit comments

Comments
 (0)