86パーティションリスト
にリンクされたリストと値xが与えられると、それはそのようなすべてのノードが少ないxがx以上のノードの前に来るよりも、そのパーティション。
あなたは、2つのパーティションのそれぞれのノードのオリジナルの相対的な順序を保存する必要があります。
例:
入力:ヘッド= 1-> 4-> 3-> 2-> 5-> 2、X = 3
出力:1-> 2-> 2-> 4-> 3-> 5
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func partition(head *ListNode, x int) *ListNode {
if head == nil {
return head
}
dummy := ListNode{Val: 0}
greaterDummy := ListNode{Val: 0}
greaterNode := &greaterDummy
lessNode := &dummy
node := head
for node != nil {
if node.Val < x {
lessNode.Next = node
lessNode = node
} else {
greaterNode.Next = node
greaterNode = node
}
//fmt.Println(lessNode.Val,greaterNode.Val)
node = node.Next
}
greaterNode.Next=nil
lessNode.Next = greaterDummy.Next
return dummy.Next
}