Remove Nth Node From End of List
思路:使用两个指针,其之间距离刚好记录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) { if(head == nullptr || n == 0) return head; ListNode dummy(-1); dummy.next = head; ListNode *firstNode = &dummy; ListNode *secondNode = &dummy; while(firstNode->next != nullptr) { if(n<1) secondNode = secondNode->next; firstNode = firstNode->next; --n; } secondNode->next = secondNode->next->next; return dummy.next; } };

浙公网安备 33010602011771号