class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { // 由于可能会删除链表头部,用哨兵节点简化代码 ListNode dummy{0, head}; auto left = &dummy; auto right = &dummy; while (n--) { right = right->next; // 右指针先向右走 n 步 } while (right->next) { left = left->next; right = right->next; // 左右指针一起走 } // 左指针的下一个节点就是倒数第 n 个节点 auto nxt = left->next; left->next = left->next->next; delete nxt; return dummy.next; } };
点赞 评论

相关推荐

01-15 19:59
中山大学 C++
牛客60887332...:你这是人写出来的? 本科标到硕士后面 留那么多空给 hr 填?
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务