1. 程式人生 > >leetcode19.刪除連結串列的倒數第N個節點

leetcode19.刪除連結串列的倒數第N個節點

1.題目
給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。
2.示例
示例:
給定一個連結串列: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.
3.思路
設定前後指標,前指標先走n步,然後一起走,前面指標到連結串列尾部,後面指標到要刪除的節點。
4.程式碼
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* front=head;
ListNode* back=head;
ListNode* pre=new ListNode(INT_MIN);
while(n>0){
front=front->next;
n–;
}
if(front==NULL) return head->next;//刪除第一個節點
while(front!=NULL){
pre=back;
back=back->next;
front=front->next;
}
pre->next=back->next;
return head;
}