-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathpartition.go
More file actions
27 lines (22 loc) · 744 Bytes
/
Copy pathpartition.go
File metadata and controls
27 lines (22 loc) · 744 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* https://leetcode.com/problems/partition-list/description/
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.
*/
package lll
func partition(head *ListNode, x int) *ListNode {
ltHead, gteHead := &ListNode{Val: 0}, &ListNode{Val: 0}
ltCur, gteCur := ltHead, gteHead
for cur := head; cur != nil; cur = cur.Next {
tmp := &ListNode{Val: cur.Val}
if cur.Val < x {
ltCur.Next, ltCur = tmp, tmp
} else {
gteCur.Next, gteCur = tmp, tmp
}
}
ltCur.Next = gteHead.Next
return ltHead.Next
}