題目描述:
給定一個單鏈表中的一個等待被刪除的節點(非表頭或表尾)。請在在O(1)時間復雜度刪除該鏈表節點。
樣例
給定 1->2->3->4,和節點 3,刪除 3 之后,鏈表應該變為 1->2->4。
題目分析:
給定一個單鏈表中的一個等待被刪除的節點(非表頭或表尾)。請在在O(1)時間復雜度刪除該鏈表節點。
將需要刪除的節點curent_node的val和curent_node.next.val交換,然后使curent_node指向curent_node.next.next即可。
源碼
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
# @param node: the node in the list should be deleted
# @return: nothing
def deleteNode(self, node):
# write your code here
tmpNode = node.next
node.val = tmpNode.val
node.next = tmpNode.next
給定一個單鏈表中的一個等待被刪除的節點(包含表頭或表尾):
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
# @param node: the node in the list should be deleted
# @return: nothing
def deleteNode(self, phead,pToBeDelete):
# write your code here
if phead == None or pToBeDelete == None:
return
# 刪除非尾節點
if pToBeDelete.next != None:
tmpNode = pToBeDelete.next
pToBeDelete.val = tmpNode.val
pToBeDelete.next = tmpNode.next
# 只有一個節點
elif phead.val == pToBeDelete:
phead.val = None
phead.next = None
# 最后一種,刪除節點是尾節點
else:
while phead.next != pToBeDelete:
phead = phead.next
phead.next = None
注:包含表頭和表尾時不知道寫的對不對,有待斟酌。
