leetcode-19. 刪除連結串列的倒數第 N 個結點
阿新 • • 發佈:2021-07-15
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { int len = getlength(head); if(len<n) // 如果倒數超出長度,超出範圍 return NULL; ListNode* L = new ListNode(0); // 習慣,一般連結串列題直接新增一個頭節點方便計算。 ListNode* H = L; L->next = head; int count = 0; cout<<"len:"<<len<<endl; while(L){ if(count==len-n){ // 先計算長度,在算出從前數第幾個應該開始 L->next = L->next->next; break; }else L = L->next; count ++; } return H->next; }int getlength(ListNode* H){ if(H==NULL) return 0; int count = 0; while(H){ H= H->next; count++; } return count; } };