所以我必须从列表中找到第二大数字.我是通过简单的循环来完成的.
我的方法是将列表分成两部分,然后将最大数字分成两部分,然后比较两个数字.我将从其中两个中选择较小的数字.我不能使用现成的功能或不同的方法.
基本上,这是我的代码.但它运行不正常
#!/usr/local/bin/python2.7
alist=[-45,0,3,10,90,5,-2,4,18,45,100,1,-266,706]
largest=alist[0]
h=len(alist)/2
m=len(alist)-h
print(alist)
for i in alist:
if alist[h]>largest:
largest=alist[h]
i=i+1
print(largest)
Run Code Online (Sandbox Code Playgroud)
ins*_*get 11
O(n ^ 2)算法:
In [79]: alist=[-45,0,3,10,90,5,-2,4,18,45,100,1,-266,706]
In [80]: max(n for n in alist if n!=max(alist))
Out[80]: 100
Run Code Online (Sandbox Code Playgroud)
O(n)算法:
In [81]: alist=[-45,0,3,10,90,5,-2,4,18,45,100,1,-266,706]
In [82]: M = max(alist)
In [83]: max(n for n in alist if n!=M)
Out[83]: 100
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21700 次 |
最近记录: |