Skip to content

Commit 94ec4d7

Browse files
committed
[E:51/531, M:52/969, H:6/386] add No: 237 Delete Node in a Linked List
1 parent b8d0ea7 commit 94ec4d7

File tree

10 files changed

+292
-2
lines changed

10 files changed

+292
-2
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ A: 虽然可以使用 ./leetcode get ... 将题目全本地化,虽然工具已
7777
的 golang 代码,但是所有测试用例还需要手动来创建。我在努力刷题中,每刷过的题目都会将测
7878
试用例一并更新到仓库中。欢迎大家一起贡献你的测试用例。
7979
80-
Q: 我是刷题者,这个仓库对我有何作者
80+
Q: 我是刷题者,这个仓库对我有何作用
8181
A: 首先,如果你使用 golang 刷题时,按题号检索时, questions/serial 目录包含了 简单/中等/困难
8282
三个层次的问题,你可以选择题号做题。按标签刷题的朋友可以在 questions/tags 找到不同标签的题目,
8383
注意在测试的时候,需要使用 (leetcode test --tag [you-choose-tag] ... )
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
## [删除链表中的节点](https://leetcode-cn.com/problems/delete-node-in-a-linked-list/)
2+
3+
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 **要被删除的节点**
4+
5+
 
6+
7+
现有一个链表 -- head = [4,5,1,9],它可以表示为:
8+
9+
![image](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/01/19/237_example.png)
10+
11+
 
12+
13+
**示例 1:**
14+
15+
`**输入:**head = [4,5,1,9], node = 5
16+
**输出:**[4,1,9]
17+
**解释:**给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
18+
`
19+
20+
**示例 2:**
21+
22+
`**输入:**head = [4,5,1,9], node = 1
23+
**输出:**[4,5,9]
24+
**解释:**给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
25+
`
26+
27+
 
28+
29+
**提示:**
30+
31+
* 链表至少包含两个节点。
32+
* 链表中所有节点的值都是唯一的。
33+
* 给定的节点为非末尾节点并且一定是链表中的一个有效节点。
34+
* 不要从你的函数中返回任何结果。
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"reflect"
7+
"time"
8+
9+
"github.com/gladmo/leetcode/leet"
10+
"github.com/gladmo/leetcode/questions/serial/简单/237/golang/solution"
11+
)
12+
13+
func main() {
14+
15+
node := &solution.ListNode{Val: 1, Next: &solution.ListNode{Val: 9}}
16+
head := &solution.ListNode{Val: 4, Next: &solution.ListNode{Val: 5, Next: node}}
17+
tests := []struct {
18+
name string
19+
input *solution.ListNode
20+
want string
21+
}{
22+
{
23+
name: "test-[4,5,1,9]",
24+
input: node,
25+
want: "[4,5,9]",
26+
},
27+
}
28+
29+
testLog := leet.NewTestLog(len(tests))
30+
defer testLog.Render()
31+
32+
timeoutDuration := time.Second * 2
33+
34+
for idx, test := range tests {
35+
// 超时检测
36+
timeout := leet.Timeout(timeoutDuration, func(ctx context.Context, cancel context.CancelFunc) {
37+
// solution.Export(test.input)
38+
cancel()
39+
})
40+
41+
if timeout {
42+
testLog.Fail(idx+1, test.name, "timeout")
43+
continue
44+
}
45+
46+
solution.Export(test.input)
47+
got := head.String()
48+
if !reflect.DeepEqual(test.want, got) {
49+
testLog.Fail(idx+1, test.name, fmt.Sprintf("want: %v, got %v.", test.want, got))
50+
continue
51+
}
52+
53+
testLog.Pass(idx+1, test.name)
54+
}
55+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package solution
2+
3+
import (
4+
"github.com/gladmo/leetcode/utils/list"
5+
)
6+
7+
// type ListNode struct {
8+
// Val int
9+
// Next *ListNode
10+
// }
11+
12+
type ListNode = list.Node
13+
14+
/****************************************************/
15+
/******** 以下为 Leetcode 示例部分(提交PR请还原) *******/
16+
/******** 使用 (./leetcode clear) 初始化所有问题 *******/
17+
/****************************************************/
18+
19+
/**
20+
* Definition for singly-linked list.
21+
* type ListNode struct {
22+
* Val int
23+
* Next *ListNode
24+
* }
25+
*/
26+
func deleteNode(node *ListNode) {
27+
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package solution
2+
3+
import (
4+
"github.com/gladmo/leetcode/utils/list"
5+
)
6+
7+
// type ListNode struct {
8+
// Val int
9+
// Next *ListNode
10+
// }
11+
12+
type ListNode = list.Node
13+
14+
/****************************************************/
15+
/******** 以下为 Leetcode 示例部分(提交PR请还原) *******/
16+
/******** 使用 (./leetcode clear) 初始化所有问题 *******/
17+
/****************************************************/
18+
19+
/**
20+
* Definition for singly-linked list.
21+
* type ListNode struct {
22+
* Val int
23+
* Next *ListNode
24+
* }
25+
*/
26+
func deleteNode(node *ListNode) {
27+
28+
}

questions/store.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
## [删除链表中的节点](https://leetcode-cn.com/problems/delete-node-in-a-linked-list/)
2+
3+
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 **要被删除的节点**
4+
5+
 
6+
7+
现有一个链表 -- head = [4,5,1,9],它可以表示为:
8+
9+
![image](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/01/19/237_example.png)
10+
11+
 
12+
13+
**示例 1:**
14+
15+
`**输入:**head = [4,5,1,9], node = 5
16+
**输出:**[4,1,9]
17+
**解释:**给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
18+
`
19+
20+
**示例 2:**
21+
22+
`**输入:**head = [4,5,1,9], node = 1
23+
**输出:**[4,5,9]
24+
**解释:**给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
25+
`
26+
27+
 
28+
29+
**提示:**
30+
31+
* 链表至少包含两个节点。
32+
* 链表中所有节点的值都是唯一的。
33+
* 给定的节点为非末尾节点并且一定是链表中的一个有效节点。
34+
* 不要从你的函数中返回任何结果。
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"reflect"
7+
"time"
8+
9+
"github.com/gladmo/leetcode/leet"
10+
"github.com/gladmo/leetcode/questions/serial/简单/237/golang/solution"
11+
)
12+
13+
func main() {
14+
15+
node := &solution.ListNode{Val: 1, Next: &solution.ListNode{Val: 9}}
16+
head := &solution.ListNode{Val: 4, Next: &solution.ListNode{Val: 5, Next: node}}
17+
tests := []struct {
18+
name string
19+
input *solution.ListNode
20+
want string
21+
}{
22+
{
23+
name: "test-[4,5,1,9]",
24+
input: node,
25+
want: "[4,5,9]",
26+
},
27+
}
28+
29+
testLog := leet.NewTestLog(len(tests))
30+
defer testLog.Render()
31+
32+
timeoutDuration := time.Second * 2
33+
34+
for idx, test := range tests {
35+
// 超时检测
36+
timeout := leet.Timeout(timeoutDuration, func(ctx context.Context, cancel context.CancelFunc) {
37+
// solution.Export(test.input)
38+
cancel()
39+
})
40+
41+
if timeout {
42+
testLog.Fail(idx+1, test.name, "timeout")
43+
continue
44+
}
45+
46+
solution.Export(test.input)
47+
got := head.String()
48+
if !reflect.DeepEqual(test.want, got) {
49+
testLog.Fail(idx+1, test.name, fmt.Sprintf("want: %v, got %v.", test.want, got))
50+
continue
51+
}
52+
53+
testLog.Pass(idx+1, test.name)
54+
}
55+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package solution
2+
3+
import (
4+
"github.com/gladmo/leetcode/utils/list"
5+
)
6+
7+
// type ListNode struct {
8+
// Val int
9+
// Next *ListNode
10+
// }
11+
12+
type ListNode = list.Node
13+
14+
/****************************************************/
15+
/******** 以下为 Leetcode 示例部分(提交PR请还原) *******/
16+
/******** 使用 (./leetcode clear) 初始化所有问题 *******/
17+
/****************************************************/
18+
19+
/**
20+
* Definition for singly-linked list.
21+
* type ListNode struct {
22+
* Val int
23+
* Next *ListNode
24+
* }
25+
*/
26+
func deleteNode(node *ListNode) {
27+
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package solution
2+
3+
import (
4+
"github.com/gladmo/leetcode/utils/list"
5+
)
6+
7+
// type ListNode struct {
8+
// Val int
9+
// Next *ListNode
10+
// }
11+
12+
type ListNode = list.Node
13+
14+
/****************************************************/
15+
/******** 以下为 Leetcode 示例部分(提交PR请还原) *******/
16+
/******** 使用 (./leetcode clear) 初始化所有问题 *******/
17+
/****************************************************/
18+
19+
/**
20+
* Definition for singly-linked list.
21+
* type ListNode struct {
22+
* Val int
23+
* Next *ListNode
24+
* }
25+
*/
26+
func deleteNode(node *ListNode) {
27+
28+
}

0 commit comments

Comments
 (0)