31 lines
577 B
Go
31 lines
577 B
Go
// Package q86 implements a solution for https://leetcode.com/problems/partition-list/
|
|
package q86
|
|
|
|
type ListNode struct {
|
|
Val int
|
|
Next *ListNode
|
|
}
|
|
|
|
func partition(head *ListNode, x int) *ListNode {
|
|
stub := &ListNode{Next: head}
|
|
before := stub
|
|
for before.Next != nil && before.Next.Val < x {
|
|
before = before.Next
|
|
}
|
|
|
|
for p := before.Next; p != nil && p.Next != nil; {
|
|
if p.Next.Val < x {
|
|
move := p.Next
|
|
p.Next = move.Next
|
|
|
|
move.Next = before.Next
|
|
before.Next = move
|
|
before = move
|
|
} else {
|
|
p = p.Next
|
|
}
|
|
}
|
|
return stub.Next
|
|
}
|
|
|
|
var _ = partition
|