1. 程式人生 > >19. Remove Nth Node From End of List C++

19. Remove Nth Node From End of List C++

使用雙指標法,可以僅遍歷一次完成節點的定位

/**
 * 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; } };