19.go 955 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package main
  2. // ListNode ...
  3. type ListNode struct {
  4. Val int
  5. Next *ListNode
  6. }
  7. func list2str(head *ListNode) string {
  8. curr := head
  9. str := make([]rune, 0)
  10. for curr != nil {
  11. str = append(str, rune(curr.Val+'0'))
  12. curr = curr.Next
  13. }
  14. return string(str)
  15. }
  16. /**
  17. * Definition for singly-linked list.
  18. * type ListNode struct {
  19. * Val int
  20. * Next *ListNode
  21. * }
  22. */
  23. func removeNthFromEnd(head *ListNode, n int) *ListNode {
  24. fast, slow := head, head
  25. for i := 0; i < n; i++ {
  26. fast = fast.Next
  27. }
  28. if fast == nil {
  29. return slow.Next
  30. }
  31. for fast.Next != nil {
  32. fast = fast.Next
  33. slow = slow.Next
  34. }
  35. slow.Next = slow.Next.Next
  36. return head
  37. }
  38. /* func main() {
  39. l15 := ListNode{5, nil}
  40. l14 := ListNode{4, &l15}
  41. l13 := ListNode{3, &l14}
  42. l12 := ListNode{2, &l13}
  43. l1 := &ListNode{1, &l12}
  44. fmt.Println(list2str(removeNthFromEnd(l1, 2)))
  45. l22 := ListNode{2, nil}
  46. l2 := &ListNode{1, &l22}
  47. fmt.Println(list2str(removeNthFromEnd(l2, 2)))
  48. } */