标签:
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
Supposed the linked list is 1 -> 2 -> 3 -> 4
and you are given the third node with value 3
, the linked list should become 1 -> 2 -> 4
after calling your function.
Solution 1:
思路:把所有之后的节点都左移,然后删掉最后一个节点。麻烦了。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public void deleteNode(ListNode node) { ListNode copy=node; while(node!=null&&node.next!=null) { copy=node; node.val=node.next.val; node=node.next; } copy.next=null; } }
Solution 2:
看了下disucssion,其实只要把右边的节点交换过来然后删掉右边的一个节点就可以了。满满都是套路啊
public void deleteNode(ListNode node) { node.val=node.next.val; node.next=node.next.next; }
237. Delete Node in a Linked List
标签:
原文地址:http://www.cnblogs.com/Machelsky/p/5860905.html