本文共 816 字,大约阅读时间需要 2 分钟。
为了解决删除链表的倒数第n个节点的问题,我们可以使用以下方法,该方法的时间复杂度为O(n)。
该方法的主要步骤如下:
m。m和给定的n,计算需要删除的位置pos,公式为pos = m - n + 1。pos,然后删除该节点。这种方法利用了两次遍历,第一次遍历用于计算链表长度,第二次遍历用于找到并删除指定节点,总时间复杂度为O(n)。
class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { if (!head) return head; int m = 0; ListNode* p = head; while (p != nullptr) { m++; p = p->next; } int pos = m - n + 1; p = head; for (int i = 0; i < pos - 1; i++) { p = p->next; } p->next = p->next->next; return head; }}; m。pos = m - n + 1计算要删除的位置。pos位置,然后删除该节点。这种方法确保了链表操作的高效性,时间复杂度为O(n),适用于处理长链表的情况。
转载地址:http://kbzb.baihongyu.com/