Leetcode 237题 Delete Node in a Linked List
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 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.
题目大意:在单链表中,仅删除给出的单独一个节点,并连上链表。 有提示,链表至少包含两个元素,每个节点的值都是唯一的,并且给出的不会是尾节点,不要从函数中返回任何东西。
两步:1. 把后节点赋给当前节点。
2. 把当前节点再指向下下个节点。
相当于跳过了当前的下一个节点。
例如单链为: [4–>5–>1–>9]
1. [4-->1-->1-->9] 把位置2赋予位置1
2. [4-->1---1-->9] 位置1直接指向位置3
直接上代码:
# 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
这种写法用JAVA和C++提交,就超过100%, 用python写效率就很低。 但是Python就两行啊!
疫情中的英国,
加油!
17/05/2020