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

题目描述:

 

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

 

posted @ 2017-11-07 16:14  zwt3  阅读(121)  评论(0编辑  收藏  举报