- 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
一趟扫描解决:
思路,引用两个节点,拉开距离,到尾“删前”。
/**
-
Definition for singly-linked list.
-
public class ListNode {
-
int val;
-
ListNode next;
-
ListNode() {}
-
ListNode(int val) { this.val = val; }
-
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
-
}
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {ListNode front=new ListNode(0); front.next=head; ListNode res=new ListNode(0); res.next=front; if(head.next==null){ return null; } for(int i=1;i<n;i++){ head=head.next; } while(head.next!=null){ head=head.next; front=front.next; } if(front.next==head){ front.next=null; }else{ front.next=front.next.next; } return res.next.next;
}
}