牛客NC53 刪除鍊錶的倒數第n個節點

2021-10-24 13:25:50 字數 959 閱讀 5718

給定乙個鍊錶,刪除鍊錶的倒數第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步,然後...