题解 | #删除链表的倒数第n个节点#

删除链表的倒数第n个节点

http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

/**

  • struct ListNode {
  • int val;
  • struct ListNode *next;
  • };
  • /

class Solution {
public:
/*
*
* @param head ListNode类
* @param n int整型
* @return ListNode类
*/
ListNode
removeNthFromEnd(ListNode* head, int n) {
// write code here
if(head == nullptr && n <= 0) return head;
ListNode* fast = head;
ListNode* slow = head;
//先让快慢指针保持n距离
while(n && fast)
{
fast = fast->next;
n--;
}
//n > 0说明链表的长度没有n大
if(n > 0)
return head;
if(fast == nullptr) //fast == nullptr倒数第n个节点刚好是第一个结点
return head->next;
while(fast->next != nullptr) //大部分的情况
{
slow = slow->next;
fast = fast->next;
}
slow->next = slow->next->next;;
return head;
}
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-15 10:59
已编辑
爱写代码的菜code...:哎,自己当时拿到字节offer的时候也在感叹终于拿到了,自己当时最想去的企业就是字节,结果还是阴差阳错去了鹅厂。祝uu一切顺利!!!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务