【发布时间】:2021-12-30 07:32:12
【问题描述】:
我正在 InterviewBit 上练习链表问题。这里的问题是 '给定一个单链表和一个整数 K,反转 一次列出 K 并返回修改后的链表。
注意:列表的长度可以被 K' 整除
遵循一种天真的方法,这就是我所做的:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reversesubList(self, A, B):
prev = None
cur = A
if cur.next is None:
return A
count = 0
while(cur is not None) and count<B:
nxt = cur.next
cur.next = prev
prev = cur
cur = nxt
count += 1
self.head = prev
return self.head, cur
# @param A : head node of linked list
# @param B : integer
# @return the head node in the linked list
def reverseList(self, A, B):
current = A
last_of_prev = None
count = 0
while current is not None:
reversed_head, new_head = self.reversesubList(current, B)
# print(reversed_head.val)
# print(new_head.val)
if count>0:
last_of_prev.next = reversed_head
else:
start = reversed_head
last_of_prev = current
current.next = new_head
current = new_head
count += 1
return start
我们的想法是遍历列表并通过一次切换每个考虑的 B 元素集的指针,一次通过我们应该能够解决问题。我收到以下错误,但无法查明原因:
Traceback (most recent call last):
File "main.py", line 228, in <module>
Z = obj.reverseList(A, B)
File "/tmp/judge/solution.py", line 25, in reverseList
reversed_head, new_head = self.reversesubList(current, B)
TypeError: 'ListNode' object is not iterable
任何可以让我理解错误的帮助将不胜感激,谢谢!
【问题讨论】:
-
reversesubList()返回单个ListNode但您的调用代码需要两个值
标签: python python-3.x linked-list