[leetcode][刪除連結串列的倒數第N個節點]
阿新 • • 發佈:2018-12-09
給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。
示例:
給定一個連結串列: 1->2->3->4->5, 和 n = 2. 當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.
說明:
給定的 n 保證是有效的。
進階:
你能嘗試使用一趟掃描實現嗎?
不想用兩個間距點一起跑的方法,用個佇列吧。。。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { queue<ListNode*> quePos; ListNode* p=head; while(p) { if(quePos.size()<=n) quePos.push(p); else {quePos.pop();quePos.push(p);} p=p->next; } if(quePos.size() == n) { p=head->next; delete head; return p; } else { p=quePos.front(); ListNode* q=p->next; p->next=p->next->next; delete q; return head; } } };