牛客题霸 NC2 重排链表

Posted Starzkg

tags:

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

https://www.nowcoder.com/practice/3d281dc0b3704347846a110bf561ef6b

解决方案

Go

func reorderList(head *ListNode) {
	// write code here
	solve(0, head)

}

func solve(i int, head *ListNode) (rj int, rtail *ListNode) {
	if head == nil {
		return -1, nil
	}
	j, tail := solve(i+1, head.Next)
	rj = j + 1
	if i == j {
		rtail = tail.Next
		tail.Next = nil
		head.Next = tail
	} else if i == j+1 {
		head.Next = nil
		rtail = tail
	} else if i < j {
		rtail = tail.Next
		tail.Next = head.Next
		head.Next = tail
	} else {
		rtail = head
	}
	return
}

参考文章

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

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

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

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

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

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

牛客题霸-SQL篇——10~20题