diff --git a/pkg/remove_nth_node_from_end_of_list/main.go b/pkg/remove_nth_node_from_end_of_list/main.go new file mode 100644 index 0000000..387fd14 --- /dev/null +++ b/pkg/remove_nth_node_from_end_of_list/main.go @@ -0,0 +1,27 @@ +package removenthnodefromendoflist + +type ListNode struct { + Val int + Next *ListNode +} + +func RemoveNthFromEnd(head *ListNode, n int) *ListNode { + nodes := []*ListNode{} + + for head != nil { + nodes = append(nodes, head) + head = head.Next + } + + if n == len(nodes) { + return nodes[0].Next + } + + if n == 1 { + nodes[len(nodes)-2].Next = nil + return nodes[0] + } + + nodes[len(nodes)-(n+1)].Next = nodes[len(nodes)-(n-1)] + return nodes[0] +}