码迷,mamicode.com
首页 > 其他好文 > 详细

lintcode 容易题:Delete Node in the Middle of Singly Linked List 在O(1)时间复杂度删除链表节点

时间:2015-10-12 18:57:27      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

题目:

在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

lintcode 容易题:Delete Node in the Middle of Singly Linked List 在O(1)时间复杂度删除链表节点

标签:

原文地址:http://www.cnblogs.com/theskulls/p/4871969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!