zoukankan      html  css  js  c++  java
  • 在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
    

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

  • 相关阅读:
    Tomcat 配置支持APR
    javascript 字符串去空格
    cordova 跨平台APP版本升级
    cordova-ios 升级到4.4.0 无法真机跑iOS8 报错: dyld`dyld_fatal_error: -> 0x120085088 <+0>: brk #0x3
    iOS 项目架构tabbarController 嵌套 navbarController
    iOS + Node + MySQL
    angularjs中的单选框绑定数据注意事项
    angular2新建的项目上传github
    ionic 下拉选择框中默认显示传入的参数
    JavaScript学习笔记
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/9647097.html
Copyright © 2011-2022 走看看