• 在O(1)时间复杂度删除链表节点


    题目描述:

    给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在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
    

     注:包含表头和表尾时不知道写的对不对,有待斟酌。

  • 相关阅读:
    信息安全系统设计基础学习总结第二周
    一维数组求和2
    求一维数组的最大子数组的和
    第三周学习进度
    构建之法阅读笔记二
    四则运算三
    学习进度第二周
    四则运算二
    测试第二次程序
    阅读计划
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/9647097.html
Copyright © 2020-2023  润新知