diff options
Diffstat (limited to 'other/remove_nth_node.cpp')
-rw-r--r-- | other/remove_nth_node.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/other/remove_nth_node.cpp b/other/remove_nth_node.cpp new file mode 100644 index 0000000..38f8a72 --- /dev/null +++ b/other/remove_nth_node.cpp @@ -0,0 +1,18 @@ +#include "leetcode.h" + +class Solution { +public: + ListNode *removeNthFromEnd(ListNode *head, int n) { + ListNode *fast = head, *slow = head; + for (int i = 0; i < n; i++) + fast = fast->next; + if (!fast) + return head->next; + while (fast->next) { + fast = fast->next; + slow = slow->next; + } + slow->next = slow->next->next; + return head; + } +}; |