Skip to content

Commit 91576fb

Browse files
author
Shuo
authored
Merge pull request #760 from openset/develop
Add: Remove Nth Node From End of List
2 parents 51a7e97 + a37d8c8 commit 91576fb

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

internal/leetcode/problems_status.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var problemStatus = map[int]bool{
1919
16: true,
2020
17: true,
2121
18: true,
22+
19: true,
2223
20: true,
2324
21: true,
2425
22: true,
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,28 @@
11
package problem19
2+
3+
import "github.com/openset/leetcode/internal/kit"
4+
5+
// ListNode - Definition for singly-linked list.
6+
type ListNode = kit.ListNode
7+
8+
/**
9+
* Definition for singly-linked list.
10+
* type ListNode struct {
11+
* Val int
12+
* Next *ListNode
13+
* }
14+
*/
15+
func removeNthFromEnd(head *ListNode, n int) *ListNode {
16+
ans := &ListNode{Next: head}
17+
pos := ans
18+
for head != nil {
19+
head = head.Next
20+
if n > 0 {
21+
n--
22+
} else {
23+
pos = pos.Next
24+
}
25+
}
26+
pos.Next = pos.Next.Next
27+
return ans.Next
28+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,40 @@
11
package problem19
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
7+
"github.com/openset/leetcode/internal/kit"
8+
)
9+
10+
type testType struct {
11+
in []int
12+
n int
13+
want []int
14+
}
15+
16+
func TestRemoveNthFromEnd(t *testing.T) {
17+
tests := [...]testType{
18+
{
19+
in: []int{1, 2, 3, 4, 5},
20+
n: 2,
21+
want: []int{1, 2, 3, 5},
22+
},
23+
{
24+
in: []int{1, 2, 3, 4, 5},
25+
n: 5,
26+
want: []int{2, 3, 4, 5},
27+
},
28+
{
29+
in: []int{1, 2, 3, 4, 5},
30+
n: 1,
31+
want: []int{1, 2, 3, 4},
32+
},
33+
}
34+
for _, tt := range tests {
35+
got := removeNthFromEnd(kit.SliceInt2ListNode(tt.in), tt.n)
36+
if !reflect.DeepEqual(kit.ListNode2SliceInt(got), tt.want) {
37+
t.Fatalf("in: %v, got: %v, want: %v", tt.in, got, tt.want)
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)