剑指offer 13. 在O(1)时间删除链表节点
2017-05-15 14:27
405 查看
class ListNode { int data; ListNode next; } // 题目:给一个链表和其中一个结点,要在O(1)的时间复杂度删除这个结点 // 解法:将这个结点后面结点的数据拷贝到这个结点,删除之后的一个结点 public class Main { public static void main(String[] args) { ListNode n1 = new ListNode(); ListNode n2 = new ListNode(); ListNode n3 = new ListNode(); ListNode n4 = new ListNode(); n1.data = 1; n2.data = 2; n3.data = 3; n4.data = 4; n1.next = n2; n2.next = n3; n3.next = n4; deleteNode(n1,n1); while(n1!=null){ System.out.print(n1.data+" "); n1 = n1.next; } } public static void deleteNode(ListNode head, ListNode node) { if(node == null || head == null){ //若链表或要删除的结点为空,则直接返回 return; } if(node.next == null){ //如果要删除的结点是最后一个结点 if(head == node){ //判断是否只有这一个结点 return; }else{ //如果有许多结点就直接删除最后一个结点 while(head.next != node){ head = head.next; } head.next = null; return; } }else{ //如果不是最后一个结点就将删除节点后面结点的数据复制到这个结点并删除后面的结点 node.data = node.next.data; node.next = node.next.next; } } }
相关文章推荐
- 剑指offer面试题13-在O(1)时间删除链表的节点
- 剑指offer-面试题13-在O(1)时间删除链表节点
- 剑指Offer :面试题13 在O(1)时间删除链表节点
- 剑指Offer13:在O(1)时间删除链表节点
- 剑指Offer面试题13(java版):在O(1)时间删除链表节点
- 剑指offer--面试题13:在O(1)时间删除链表节点
- 剑指offer之面试题13:在O(1)时间删除链表节点
- 剑指Offer之在O(1)时间删除链表节点(题13)
- 剑指offer13-在O(1)时间删除链表节点
- 剑指offer 13--在O(1)时间内删除链表节点
- 剑指offer13:O(1)时间删除链表节点
- 剑指offer_13(在O(1)的时间内删除链表中的某一个元素)
- 剑指offer-13:在O(1)时间删除链表结点
- 剑指Offer-13-在O(1)时间删除链表结点
- 【剑指offer 面试题13】在 O(1) 时间删除链表结点
- 剑指offer-13:在O(1)时间删除链表结点
- 剑指offer--用O(1)的时间复杂度删除链表的节点
- 【剑指offer】链表相关-在o(1)时间删除链表结点13
- 剑指Offer之在O(1)时间删除链表节点
- 【剑指offer-Java版】13O(1)时间删除链表结点