LintCode之在O时间复杂度删除链表

Posted echo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode之在O时间复杂度删除链表相关的知识,希望对你有一定的参考价值。

题目描述:

 

分析:因为题目要求不能用循环,而且只给了要删除的节点,并没有给链表。所以我无法取得要删除节点的前一个节点,只能在待删除的节点以及下一个节点上做文章。我的思路是:将待删除的节点的下一个节点的值赋给待删除节点,然后让待删除的节点的next指向待删除节点的next的next。

我的代码:

 1 /**
 2  * Definition for ListNode.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int val) {
 7  *         this.val = val;
 8  *         this.next = null;
 9  *     }
10  * }
11  */
12 
13 
14 public class Solution {
15     /*
16      * @param node: the node in the list should be deletedt
17      * @return: nothing
18      */
19     public void deleteNode(ListNode node) {
20         // write your code here
21         if(node == null) {
22             return ;
23         }
24         node.val = node.next.val;
25         node.next = node.next.next;
26     }
27 }

 

以上是关于LintCode之在O时间复杂度删除链表的主要内容,如果未能解决你的问题,请参考以下文章

LintCode 174. 删除链表中倒数第n个节点

Lintcode372 Delete Node in the Middle of Singly Linked List solution 题解

剑指offer---以O时间删除链表节点

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

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

剑指offer18删除链表的(重复)节点