题目:在O(1)的时间内删除列表节点。
/** * 步骤: * 1.检查head与removeNode节点是否为空 * 2.检查removeNode的后一个节点是否为空,不为空则使用后一个节点的值覆盖removeNode节点。 * 3.若只有一个节点,则置空。 * 4.若removeNode为最后一个节点,则只能遍历。 * @param head * @param removeNode */ public void removeNode(ListNode head, ListNode removeNode){ if(head==null || removeNode==null){ return; } if(removeNode.next!=null){ ListNode tempNode = removeNode.next; removeNode.val = tempNode.val; removeNode.next = tempNode.next; tempNode=null; return; } if(removeNode==head){ head=null; removeNode=null; return; } ListNode tempNode = head; while (tempNode.next!=removeNode){ tempNode = tempNode.next; } tempNode.next=null; removeNode=null; }