Medium

Len Chen
1 min readSep 17, 2018

Problem

Given a linked list, remove the n-th node from the end of list and return its head.

Example:

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.

Note:

Given n will always be valid.

Follow up:

Could you do this in one pass?

Solution

Use two pointers runner and walker. Let runner move n steps first and make walker join to move. Once runner reaches the end, walker will be the previous node of the node we want to remove.

Complexity

Obviously it only passes list once so it takes O(n) time if n denotes to amount of nodes in this list. And it only uses O(1) extra space.

--

--

Len Chen
Len Chen

No responses yet