我需要 python udemy 练习方面的帮助。这是练习:
编写一个函数,给定一个整数列表,将给出该列表中包含的 k 个最小整数。该算法不得更改原始数组。使函数尽可能节省空间,因此不允许调用 sort 或排序。将其推广到 k 个最小整数,假设 k << n,其中 n 是列表中的元素数量 提示:使用队列。
例如,lower([1,2,3,-1,-2,-3],2) 返回 [-3,-2]。
我尝试了这段代码,它在 Pycharm 上工作,但在 udemy 上不起作用,它一直给我:
“NoneType”对象没有属性“sort”。
class Node:
def __init__(self, data=None, next_node=None):
self.data = data
self.next = next_node
def __str__(self):
return str(self.data)
class Queue:
def __init__(self):
self.length = 0
self.head = None
self.last = None
def enqueue(self, data):
node = Node(data)
if self.length == 0:
self.head = node
self.last = node
self.length = 1
return
last = self.last
last.next = node
self.last = node
self.length += 1
def dequeue(self):
if self.length == 0:
return None
data = self.head.data
self.head = self.head.next
self.length -= 1
if self.length == 0:
self.last = None
return data
def lowest(l, k):
if k >= (len(l)//2):
return
q = Queue()
array = l.copy()
while True:
temp = max(array)
q.enqueue(temp)
array.remove(temp)
if len(array) == k:
return array
l = [1, 2, 3, -1, -2, -3]
print(lowest(l, 2))
l = [32,21,45,74,24,65,34,54,78,98,77,89,84]
print(lowest(l,9))
萧十郎
相关分类