給定乙個鍊錶,刪除鍊錶的倒數第n個節點並返回鍊錶的頭指標
例如,
給出的鍊錶為:1->2->3->4->5, n= 2.備註:刪除了鍊錶的倒數第n個節點之後,鍊錶變為1->2->3->5.
題目保證n一定是有效的
請給出請給出時間複雜度為o(n)的演算法
1.雜湊儲存,key為序號,value為指向該位置的指標
/**
* struct listnode ;
*/#include class solution
if(i - 1 == n)
auto it = listmap.find(i - n );
pnow = it->second;
it = listmap.find(i - n - 1);
ppre = it->second;
ppre->next = pnow->next;
pnow->next = nullptr;
delete pnow;
return head;
}};
2.雙指標,快指標先走n步,然後慢指標從head,快指標從第n個節點一起走,直到快指標指向nullptr,則慢指標走了鍊錶長度l-n個節點,指向的位置是倒數第n+1個節點(倒數第n個節點正著數應該是l-n+1)
/**
* struct listnode ;
*/class solution
if(fast == nullptr)
while(fast->next != nullptr)
pnow = slow->next;
slow->next = pnow->next;
pnow->next = nullptr;
delete pnow;
return head;
}};
NC53 刪除鍊錶的倒數第n個節點
知識點 鍊錶 題目鏈結 題目描述 給定乙個鍊錶,刪除鍊錶的倒數第n個節點並返回鍊錶的頭指標 例如,給出的鍊錶為 1 2 3 4 5,n 2.刪除了鍊錶的倒數第n個節點之後,鍊錶變為1 2 3 5.備註 題目保證n一定是有效的 請給出請給出時間複雜度為o n 的演算法 示例1 輸入 2 輸出 2 解題...
刪除鍊錶倒數第N個節點
1.問題 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.2.演算法 暴力破解法 先計算得出鍊錶的長度m,然後將鍊錶長度和所給倒數字置相減,即loc m n 1,得出刪除節點的前...
刪除鍊錶倒數第n個節點
leetcode 題目 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.note n 鍊錶長度時,刪除頭節點 n 0時,不做任何操作。當第乙個指標first 比第二個指標領先n步,然後...