Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5.
/**
* Definition for singly-linked list.
* public class ListNode {
* public var val: Int
* public var next: ListNode?
* public init(_ val: Int) {
* self.val = val
* self.next = nil
* }
* }
*/
//1->2->3->4->5->6, n = 2;
//=> 1->2->3->4->6
class Solution {
func removeNthFromEnd(_ head: ListNode?, _ n: Int) -> ListNode? {
var output = ListNode(0);
output.next = head;
var fast:ListNode? = output;
var slow:ListNode? = output;
for i in 0..<n {
fast = fast!.next
}
while(fast?.next != nil) {
fast = fast!.next
slow = slow!.next
}
slow!.next = slow!.next?.next
return output.next;
}
}