diff --git a/remove-nth-node-from-end-of-list/sol.go b/remove-nth-node-from-end-of-list/sol.go new file mode 100644 index 0000000..105b966 --- /dev/null +++ b/remove-nth-node-from-end-of-list/sol.go @@ -0,0 +1,18 @@ +package main + +type ListNode struct { + Val int + Next *ListNode +} + +func removeNthFromEnd(head *ListNode, n int) *ListNode { + top := &ListNode{Val: 0, Next: head} + parent := top + for current, c := head, 1; current != nil; current, c = current.Next, c+1 { + if c > n { + parent = parent.Next + } + } + parent.Next = parent.Next.Next + return top.Next +}