注意分为两种情况,一种是刚开始就删到头的情况,一种是删的不是头的情况。
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { public: /** * * @param head ListNode类 * @param n int整型 * @return ListNode类 */ ListNode* removeNthFromEnd(ListNode* head, int n) { // write code here if(!head){ return NULL; } ListNode* temp= head; int length=0; while(head){ length++; head = head->next; } head = temp; if(0 == length-n){ return head->next; } for(int i = 0; i<length-n;i++){ if(i==length-n-1){ temp->next = temp->next->next; } temp = temp->next; } return head; } };