python-June-Day2-Delete Node in a Linked List(easy)

Delete Node in a Linked List(easy)

问题描述:

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

Given linked list -- head = [4,5,1,9], which looks like following:

从一个单链表中删除元素。

Example:

Example 1:

Input: head = [4,5,1,9], node = 5
Output: [4,1,9]
Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.
Example 2:

Input: head = [4,5,1,9], node = 1
Output: [4,5,9]
Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.

Note:

  • The linked list will have at least two elements.
  • All of the nodes’ values will be unique.
  • The given node will not be the tail and it will always be a valid node of the linked list.
  • Do not return anything from your function.

解法:

当时看到这道题的描述就很疑惑,因为就是一个简单的从单链表中删除元素的题有什么难的,而且为什么要强调不能删除最后一个元素呢。而看到给的函数头后就疑惑了,因为只给了要删除的值,按理说不是应该给两个值吗,一个单链表,一个删除值。。。

想了好久,看了一个解析后明白了,这题就不是传统给单链表删值的题,他是给了我们一个节点的位置,然后让我们把这个节点删除掉,至于不给我们单链表的操作可能就是不想我们用传统的遍历做吧。。但是这题的描述也太不清楚了,怪不得leetcode上踩那么多。

解法就是给了我们节点位置了,我们可以把当前节点位置的值变成后续节点位置的值,然后把当前节点的next变成next的next,相当于我们其实是将node.next移除了。。

看懂题意后这道题还蛮有意思的,可以扩展一下思维。

# 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
        return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值