跳到主要内容

237.删除链表中的节点

链接:237.删除链表中的节点
难度:Medium
标签:链表
简介:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

题解 1 - java

  • 编辑时间:2020-02-13
  • 内存消耗:43MB
  • 编程语言:java
  • 解法介绍:获取下一个节点的值赋值给当前节点,当前节点的下一个等于下一个节点的下一个。
class Solution {
public void deleteNode(ListNode node) {
node.val=node.next.val;
node.next=node.next.next;
}
}

题解 2 - 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;
}

题解 3 - 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;
}

题解 4 - 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;
}