题目:Given a linked list, remove the n-th node from the end of list and return its head.
解题思路:题目很简单,移除链表中的倒数第n个节点,先正序算一下链表长度,然后再找出第n个。善用dummy节点,可以用来删除第一个。
代码:
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode removeNthFromEnd(ListNode head, int n) {
int num = 0; //num代表链表长度
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode node = head;
while (node!=null){
num++;
node = node.next;
}
node = dummy;
int pre = num-n; //倒数第n个节点的前驱位置
while (pre>0){
pre--;
node = node.next;
}
node.next = node.next.next; //删除第n个
return dummy.next;
}