86.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 partition(head *ListNode, x int) *ListNode {
  24. // if head == nil || head.Next == nil {
  25. // return head
  26. // }
  27. // dummy := ListNode{0, head}
  28. // fast, slow := &dummy, &dummy
  29. // // slow -> body -> fast -> target -> tail
  30. // // => slow -> target -> body -> fast -> tail
  31. // // => slow -> body -> fast -> tail
  32. // // or fast/slow -> tail
  33. // for fast != nil {
  34. // if fast.Next != nil && fast.Next.Val < x {
  35. // if fast == slow {
  36. // fast = fast.Next
  37. // } else {
  38. // tail := fast.Next.Next
  39. // fast.Next.Next = slow.Next
  40. // slow.Next = fast.Next
  41. // fast.Next = tail
  42. // }
  43. // slow = slow.Next
  44. // } else {
  45. // fast = fast.Next
  46. // }
  47. // }
  48. // return dummy.Next
  49. // }
  50. /* func main() {
  51. l15 := ListNode{5, nil}
  52. l14 := ListNode{0, &l15}
  53. l13 := ListNode{6, &l14}
  54. l12 := ListNode{3, &l13}
  55. l1 := &ListNode{7, &l12}
  56. fmt.Println(list2str(partition(l1, 6)))
  57. fmt.Println(list2str(partition(nil, 9)))
  58. l23 := ListNode{3, nil}
  59. l22 := ListNode{2, &l23}
  60. l2 := &ListNode{1, &l22}
  61. fmt.Println(list2str(partition(l2, 9)))
  62. }
  63. */