19. Remove Nth Node From End of List C++
阿新 • • 發佈:2018-11-27
使用雙指標法,可以僅遍歷一次完成節點的定位
/** * 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) { ListNode* l = new ListNode(0); l= head; ListNode* r = new ListNode(0); r = l; while(n--) r = r->next; //用於判斷head是否為單節點連結串列 if(r == NULL) return head->next; while(r != NULL && r->next != NULL) { r = r->next; l = l->next; } ListNode* temp = new ListNode(0); temp = l->next; l->next = l->next->next; if(temp) delete(temp); return head; } };