19.go 706 B

123456789101112131415161718192021222324252627282930313233343536
  1. package main
  2. /**
  3. * Definition for singly-linked list.
  4. * type ListNode struct {
  5. * Val int
  6. * Next *ListNode
  7. * }
  8. */
  9. func removeNthFromEnd(head *ListNode, n int) *ListNode {
  10. fast, slow := head, head
  11. for i := 0; i < n; i++ {
  12. fast = fast.Next
  13. }
  14. if fast == nil {
  15. return slow.Next
  16. }
  17. for fast.Next != nil {
  18. fast = fast.Next
  19. slow = slow.Next
  20. }
  21. slow.Next = slow.Next.Next
  22. return head
  23. }
  24. /* func main() {
  25. l15 := ListNode{5, nil}
  26. l14 := ListNode{4, &l15}
  27. l13 := ListNode{3, &l14}
  28. l12 := ListNode{2, &l13}
  29. l1 := &ListNode{1, &l12}
  30. fmt.Println(list2str(removeNthFromEnd(l1, 2)))
  31. l22 := ListNode{2, nil}
  32. l2 := &ListNode{1, &l22}
  33. fmt.Println(list2str(removeNthFromEnd(l2, 2)))
  34. } */