用于将仲裁指针指向链接列表中的最大值右侧节点的 Javascript 程序
给定单链表,每个节点都有一个当前指向 NULL 的附加“任意”指针。我们需要将“任意”指针指向右侧链表中的最大值节点。
一个简单的解决方案是一个一个地遍历所有节点。对于每个节点,找到右侧具有最大值的节点并更改下一个指针。该解决方案的时间复杂度为 O(n 2 )。
一个有效的解决方案可以在 O(n) 时间内工作。以下是步骤。
- 反转给定的链表。
- 开始遍历链表,存储目前遇到的最大值节点。使每个节点的仲裁指向最大值。如果当前节点中的数据超过了迄今为止的max节点,则更新max。
- 反向修改链表并返回头部。
以下是上述步骤的实现。
Javascript
Javascript
输出:
Resultant Linked List is:
Node Next Pointer Arbit Pointer
5 10 10
10 2 3
2 3 3
3 NULL NULL
递归解决方案:
我们可以递归到达最后一个节点,从最后遍历链表。递归解决方案不需要反转链表。我们还可以使用堆栈代替递归来临时保存节点。感谢 Santosh Kumar Mishra 提供此解决方案。
Javascript
输出:
Resultant Linked List is:
Node Next Pointer Arbit Pointer
5 10 10
10 2 3
2 3 3
3 NULL NULL
请参考完整文章 Point arbit pointer to maximum value right side node in alinked list 了解更多详情!