牛客题霸 NC23 划分链表

Posted Starzkg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客题霸 NC23 划分链表相关的知识,希望对你有一定的参考价值。

https://www.nowcoder.com/practice/1dc1036be38f45f19000e48abe00b12f

解决方案

Go

func partition(head *ListNode, x int) *ListNode {
	// write code here
	return solve(head, nil, nil, x)
}

func solve(head *ListNode, pre *ListNode, h *ListNode, x int) *ListNode {
	if head == nil {
		return h
	}
	if head.Val >= x {
		if pre == nil {
			return solve(head.Next, head, head, x)
		} else {
			next := head.Next
			pre.Next = head
			head.Next = nil
			return solve(next, head, h, x)
		}
	} else {
		head.Next = solve(head.Next, pre, h, x)
		return head
	}
}


参考文章

以上是关于牛客题霸 NC23 划分链表的主要内容,如果未能解决你的问题,请参考以下文章

牛客题霸 NC21 链表内指定区间反转

牛客题霸 NC3 链表中环的入口结点

牛客题霸 NC4 判断链表中是否有环

牛客题霸 NC25 删除有序链表中重复的元素-I

牛客题霸 NC24 删除有序链表中重复的元素-II

牛客题霸 NC13 二叉树的最大深度