现在在学校开始用python编程,我不知道如何处理这个问题。有什么想法吗?
输入由整数组成,由换行符分隔。你的程序应该将它们提交到一个链表中,遍历链表并打印出最高的数字。
采取第一个数字,并做一个行动,说“如果下一个数字更大,采取一个,否则,保持当前的数字,并头向下的名单和重复”
然后当它到达列表的末尾时,它会打印它所拥有的值。
from sys import stdin
class Kubbe:
vekt = None
neste = None
def __init__(self, vekt):
self.vekt = vekt
self.neste = None
def spor(kubbe):
# WRITE YOUR CODE HERE
# Creates linked list
forste = None
siste = None
for linje in stdin:
forrige_siste = siste
siste = Kubbe(int(linje))
if forste == None:
forste = siste
else:
forrige_siste.neste = siste
# Calls the solution function and prints the result
print spor(forste)
输入:示例
54
37
100
123
1
54
所需输出
123
Python中有一个名为
reduce
的内置函数,它遍历一个列表并用给定的函数“压缩”它。也就是说,如果您有一个包含5个元素的列表[a,b,c,d,e]
和一个函数f
,那么它将有效地你应该能够用这个来写一个非常简洁的解决方案。
如果你想不那么抽象,你就需要依次遍历列表中的每个元素,在变量中存储到目前为止最大的数字。仅当达到的元素大于所述变量的值时才更改变量。
“链表”在Python中很少使用——通常,人们只使用Python内置的列表
list
,它实际上更像一个“动态向量”。因此,看到一个链接列表被指定为练习约束的一部分是很奇怪的。但重点是,您显示的代码是已经创建了一个链表——头在
forste
,对于每个节点,下一个节点指针在.neste
,有效负载在.vekt
。所以,不管你的问题是什么,这大概不是你要问的。一旦您完全构建了链表(即,在当前的
spor
代码末尾),循环遍历链表的简单方法是在你的例子中,“过程”部分的逻辑当然是,正如你的Q的文本已经说的:
唯一的微妙之处是,在这个
while
循环之前,您需要首先将themax
设置为“可能的最小值”;在最新版本的Python中,“负无穷大”被可靠地记录和比较(尽管它只是一个浮点数,但仍然与int进行正确的比较),因此会有用的。更优雅的做法可能是,最初将最大值设置为第一个有效载荷,避免混淆无穷大。
相关问题 更多 >
编程相关推荐