237.删除链表中的节点
链接:237.删除链表中的节点
难度:Medium
标签:链表
简介:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
题解 1 - c
- 编辑时间:2021-11-19
- 执行用时:4ms
- 内存消耗:6.2MB
- 编程语言:c
- 解法介绍:递归。
void deleteNode(struct ListNode* node) {
struct ListNode *next = node->next;
node->val = next->val;
node->next = next->next;
}
题解 2 - typescript
- 编辑时间:2021-11-02
- 执行用时:88ms
- 内存消耗:39.6MB
- 编程语言:typescript
- 解法介绍:与下一节点替换。
function deleteNode(root: ListNode | null): void {
if (root === null) return;
root.val = root.next.val;
root.next = root.next.next;
}
题解 3 - typescript
- 编辑时间:2021-11-02
- 执行用时:88ms
- 内存消耗:39.7MB
- 编程语言:typescript
- 解法介绍:依次对当前节点赋值后面的节点的值。
function deleteNode(root: ListNode | null): void {
if (root === null) return;
let p = root;
let pre = p;
while (p.next) {
p.val = p.next.val;
pre = p;
p = p.next;
}
pre.next = null;
}
题解 4 - java
- 编辑时间:2020-02-13
- 内存消耗:43MB
- 编程语言:java
- 解法介绍:获取下一个节点的值赋值给当前节点,当前节点的下一个等于下一个节点的下一个。
class Solution {
public void deleteNode(ListNode node) {
node.val=node.next.val;
node.next=node.next.next;
}
}