python - 在 Python 中,给定一个单链表,通过将其分成两半(围绕中位数)折叠它并反转每一半
问题描述
我可以扭转它,但对如何访问链表的中位数感到困惑
def reverseLinkedList(head):
current = head
previous = None
nextNode = None
while current:
nextNode = current.nextNode
current.nextNode = previous
previous = current
current = nextNode
return previous
有人可以帮忙解决吗?
解决方案
链表不支持随机访问。因此,除非您提前知道链表中的元素数量或中间节点通过代码中的节点结构/定义被标记为这样,否则您将无法在不迭代的情况下获得它。
如果您知道链表中元素的数量,您可以只迭代其中的一半,否则您将不得不迭代整个列表,跟踪计数,然后再次迭代以计数除以 2。
推荐阅读
- python - Python中神经网络的数据准备
- snowflake-cloud-data-platform - 使用 ADF 将多个表从雪花加载到雪花
- c++ - 如何使用 PCIDriverKit 对 PCI BAR 进行内存映射?
- c# - 带有循环的数字本身的计算能力
- python - 我对一个简单的 Python 考试问题的回答
- c# - Linq to entity 没有生成 where 子句
- java - 我在为 public static void 下的 fillRect 语句定义变量时遇到问题。我如何解决它?
- apache-kafka - 将 Kafka Connect 与 jcustenborder / kafka-connect-twitter 一起使用
- aframe - Oculus 控制器为黑色,带有 A 框架
- kql - 如何过滤掉除最新元素之外的所有元素?