給定一個鏈表,刪除鏈表的倒數第?n?個節點,并且返回鏈表的頭結點。
示例:
給定一個鏈表: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點后,鏈表變為 1->2->3->5.
說明:給定的 n?保證是有效的。
進階:
你能嘗試使用一趟掃描實現嗎?
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
解法:
/*** 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) {if(!head) return head;ListNode *slow = head, *fast = head;while(n--)fast = fast->next;if(fast == NULL) return head->next;while(fast->next){fast = fast->next;slow = slow->next;}slow->next = slow->next->next;return head; }
};
?