Skip to content

Commit 95129aa

Browse files
author
Shuo
committed
Add: Remove Nth Node From End of List
1 parent ad4abce commit 95129aa

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed
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+
q := []*ListNode{head}
17+
for head.Next != nil {
18+
q = append(q, head.Next)
19+
head = head.Next
20+
}
21+
i := len(q) - n
22+
if i > 0 {
23+
q[i-1].Next = q[i].Next
24+
} else {
25+
q[0] = q[i].Next
26+
}
27+
return q[0]
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)