指定されたノードが削除されるために与えられたリスト(非エンド)ノードを削除することを可能にする関数を記述してください、あなただけ必要となります。
既存のリスト - ヘッド= [4,5,1,9]、それはのように表すことができます。
例1:
入力:ヘッド= [4,5,1,9]、ノード = 5
出力:[4,1,9]
あなたは5の値リスト内の指定された2番目のノードた後で、あなたの関数を呼び出す:辞書リスト株4 - > 1 - > 9
例2:
入力:ヘッド= [4,5,1,9]、ノード = 1つの
出力:[4,5,9]
リストの与えられた値1の後にあなたが第3のノード、そしてあなたの関数を呼び出す:辞書リスト株4 - > 5 - > 9。
説明:
少なくとも二つのノードを含むリスト。
リスト内のすべてのノードの値がユニークです。
非指定されたノードおよびエンド・ノードは、リンクされたリスト内の有効なノードでなければなりません。
あなたの関数から結果を返しません。
出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/delete-node-in-a-linked-list
この質問は、それが唯一のノードに、何の頭を持っていない、非常に興味深いです
1-> 2-> 3-> 4、ここで削除した2
1-> 3-> 3-> 4 1 - > 3-> 4
# 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
ヘッドケースがあることを、知る権利はありません
# 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.
"""
if head == node:
tmp=head.next
head.next = None
head = tmp
else:
while(head.next.next):
if head.next==node:
head.next= head.next.next
else:
head = head.next