zoukankan      html  css  js  c++  java
  • lintcode:在O(1)时间复杂度删除链表节点

    题目:

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

     给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。

    样例

    给定 1->2->3->4,和节点 3,返回 1->2->4。

    解题:

    方法好贱,先把要删除节点后面一个节点的值赋给删除节点,这样需要删除节点就删除了,再把删除节点指向删除节点后面节点的节点

    就像这样:

            node.val = node.next.val;
            node.next = node.next.next;

    Java程序:

    /**
     * Definition for ListNode.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int val) {
     *         this.val = val;
     *         this.next = null;
     *     }
     * }
     */ 
    public class Solution {
        /**
         * @param node: the node in the list should be deleted
         * @return: nothing
         */
        public void deleteNode(ListNode node) {
            // write your code here
            if(node==null)
                return;
            node.val = node.next.val;
            node.next = node.next.next;
            
        }
    }
    View Code

    总耗时: 2447 ms

    Python程序:

    """
    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
            if node==None:
                return
            node.val = node.next.val
            node.next = node.next.next
    View Code

    总耗时: 312 ms

  • 相关阅读:
    360随身WiFi使用问题解决,无法在没有网络的电脑上使用
    np问题(大数阶乘取模)
    传球(概率问题)
    区间平均值(逆序对)
    完全平方数最大
    计算毫秒
    祖玛游戏
    后缀最大值
    Blah数集(双指针单调队列)
    逢低吸纳(最长下降子序列+方案数+高精度)
  • 原文地址:https://www.cnblogs.com/theskulls/p/4871969.html
Copyright © 2011-2022 走看看