| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | package main// ListNode .../* type ListNode struct {	Val  int	Next *ListNode} *//* func list2str(head *ListNode) string {	curr := head	str := make([]rune, 0)	for curr != nil {		str = append(str, rune(curr.Val+'0'))		curr = curr.Next	}	return string(str)} *//** * Definition for singly-linked list. * type ListNode struct { *     Val int *     Next *ListNode * } */// func partition(head *ListNode, x int) *ListNode {// 	if head == nil || head.Next == nil {// 		return head// 	}// 	dummy := ListNode{0, head}// 	fast, slow := &dummy, &dummy// 	// slow -> body -> fast -> target -> tail// 	// => slow -> target -> body -> fast -> tail// 	// => slow -> body -> fast -> tail// 	// or fast/slow -> tail// 	for fast != nil {// 		if fast.Next != nil && fast.Next.Val < x {// 			if fast == slow {// 				fast = fast.Next// 			} else {// 				tail := fast.Next.Next// 				fast.Next.Next = slow.Next// 				slow.Next = fast.Next// 				fast.Next = tail// 			}// 			slow = slow.Next// 		} else {// 			fast = fast.Next// 		}// 	}// 	return dummy.Next// }/* func main() {	l15 := ListNode{5, nil}	l14 := ListNode{0, &l15}	l13 := ListNode{6, &l14}	l12 := ListNode{3, &l13}	l1 := &ListNode{7, &l12}	fmt.Println(list2str(partition(l1, 6)))	fmt.Println(list2str(partition(nil, 9)))	l23 := ListNode{3, nil}	l22 := ListNode{2, &l23}	l2 := &ListNode{1, &l22}	fmt.Println(list2str(partition(l2, 9)))}*/
 |