LeetCode中等:删除链表的倒数第N个节点(C#)
题目说明:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
思路:这道题没什么好说的,快慢指针就行了,另外还需要注意的是要对N等于链表节点数的特殊情况进行处理。
直接上代码了。
publicListNode RemoveNthFromEnd(ListNode head, int n)
{
ListNode fast = head;
ListNode slow = head;
for (int i = 0; i < n; i++)
fast = fast.next;
if (fast == null)
return head.next;
while (fast.next!=null)
{
slow = slow.next;
fast = fast.next;
}
slow.next = slow.next.next;
return head;
}
对链表只遍历一次,所以时间复杂度是O(n);所用变量是常数,所以空间复杂度是O(1)。