1. 程式人生 > 其它 >leetcode-19. 刪除連結串列的倒數第 N 個結點

leetcode-19. 刪除連結串列的倒數第 N 個結點

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