LeetCode86. 分隔链表
1. 问题描述
2. 思路
双指针
- 声明两个节点small和big
- 遍历当前链表
- 如果cur.Val < x,将cur节点连接到small链表上
- 否则,将cur节点连接到big链表上
- 将small链表和big链表连接起来
3. 代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func partition(head *ListNode, x int) *ListNode {
small, big := &ListNode{}, &ListNode{}
cur,smallHead,bigHead := head, small,big
for cur != nil {
if cur.Val < x {
small.Next = cur
small = small.Next
} else {
big.Next = cur
big = big.Next
}
cur = cur.Next
}
// 最后要给big.Next赋值
big.Next = nil
small.Next = bigHead.Next
return smallHead.Next
}