链接列表的拆分方法

时间:2015-04-19 15:54:17

标签: python linked-list

您好我正在尝试这样做:

•split(theList) - 给头引用(theList),将链表分成两半以创建两个较小的链表。返回从列表的后半部分创建的链表的头引用。假设列表包含至少一个节点。如果链表中存在奇数个节点,则可以将额外节点放置在两个新列表中的任何一个中。您的解决方案必须在O(n)时间内分割列表

这是我的代码。我想知道这是否在O(n)时间完成?

def split(theList):
  theList = head
  center = head
  index = 0
  while head:
      if index % 2:
          center = center.next
      head = head.next
      index += 1
  headB = center.next
  center.next = None
  return headB

1 个答案:

答案 0 :(得分:0)

当然,你基本上是遍历所有列表元素。您正在访问每个元素一次。因此,复杂度为O(n),列表元素的数量为n。