Files
LeetCode-Go/leetcode/0237.Delete-Node-in-a-Linked-List/237. Delete Node in a Linked List_test.go
2020-08-27 00:58:22 +08:00

94 lines
1.4 KiB
Go

package leetcode
import (
"fmt"
"testing"
"github.com/halfrost/LeetCode-Go/structures"
)
type question237 struct {
para237
ans237
}
// para 是参数
// one 代表第一个参数
type para237 struct {
one []int
n int
}
// ans 是答案
// one 代表第一个答案
type ans237 struct {
one []int
}
func Test_Problem237(t *testing.T) {
qs := []question237{
{
para237{[]int{1, 2, 3, 4, 5}, 1},
ans237{[]int{2, 3, 4, 5}},
},
{
para237{[]int{1, 2, 3, 4, 5}, 2},
ans237{[]int{1, 3, 4, 5}},
},
{
para237{[]int{1, 1, 1, 1, 1}, 1},
ans237{[]int{}},
},
{
para237{[]int{1, 2, 3, 4, 5}, 5},
ans237{[]int{1, 2, 3, 4}},
},
{
para237{[]int{}, 5},
ans237{[]int{}},
},
{
para237{[]int{1, 2, 3, 4, 5}, 10},
ans237{[]int{1, 2, 3, 4, 5}},
},
{
para237{[]int{1}, 1},
ans237{[]int{}},
},
}
fmt.Printf("------------------------Leetcode Problem 237------------------------\n")
for _, q := range qs {
_, p := q.ans237, q.para237
fmt.Printf("【input】:%v 【output】:%v\n", p, structures.List2Ints(removeElements(structures.Ints2List(p.one), p.n)))
}
fmt.Printf("\n\n\n")
}
func removeElements(head *ListNode, val int) *ListNode {
if head == nil {
return head
}
newHead := &ListNode{Val: 0, Next: head}
pre := newHead
cur := head
for cur != nil {
if cur.Val == val {
pre.Next = cur.Next
} else {
pre = cur
}
cur = cur.Next
}
return newHead.Next
}