【算法学习】237. 删除链表中的节点(java / c / c++ / python / go)

313 阅读2分钟
  • 本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

非常感谢你阅读本文~ 欢迎【👍点赞】【⭐收藏】【📝评论】~ 放弃不难,但坚持一定很酷~ 希望我们大家都能每天进步一点点~ 本文由 二当家的白帽子 https://juejin.cn/user/2771185768884824/posts 博客原创~


237. 删除链表中的节点:

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。

现有一个链表 -- head = [4,5,1,9],它可以表示为:

在这里插入图片描述

样例 1

输入:
	head = [4,5,1,9], node = 5
输出:
	[4,1,9]
解释:
	给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

提示


分析

  • 链表前一个节点存有下一个节点的地址,一般的删除节点,是直接将当前节点的上一个节点与当前节点的下一个节点相连。
  • 本题只传入要删除的节点,所以当前节点的地址是不能变的,也就只能改变值了。在业务的角度看,并不关心链表的地址,关心的是里面的值,所以我们只要让值看起来是删掉了,就算是删除了当前节点。
  • 这道题官方不让选rust,二当家的只好舍掉。

题解

java

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}

c

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
void deleteNode(struct ListNode* node) {
    node->val = node->next->val;
    node->next = node->next->next;
}

c++

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    void deleteNode(ListNode* node) {
        node->val = node->next->val;
        node->next = node->next->next;
    }
};

python

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def deleteNode(self, node):
        """
        :type node: ListNode
        :rtype: void Do not return anything, modify node in-place instead.
        """
        node.val = node.next.val
        node.next = node.next.next

go

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteNode(node *ListNode) {
    node.Val = node.Next.Val;
    node.Next = node.Next.Next;
}

在这里插入图片描述


leetcode-cn.com/problems/de…


欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章