python - 用指针找到第二大数的问题
问题描述
我做了一个方法,试图在一个未排序的带有指针的整数列表中找到第二大数字。当我传递任何在最大数字之前并排放置第二大数字的整数列表时,我没有得到预期的结果。例如,当我通过时[2, 6, 6, 2, 11]
,我得到输出:
Largest: 11
Second Largest: 2
由于这一行6
, the 永远不会分配给:second_max
elif j > second_max and first_max != j:
如果我删除第二个条件,该方法可能会将重复项分配给first_max
并且second_max
不输出实际的第二大数字。
first_max=float('-inf')
second_max=float('-inf')
for i,j in enumerate(nums):
if j > first_max:
first_max=j
elif j > second_max and first_max != j:
second_max=j
if first_max == float('-inf'):
first_max,second_max=None,None
elif second_max == float('-inf'):
second_max=None
print("Largest: {}".format(first_max))
print("Second Largest: {}".format(second_max))
将不胜感激任何帮助。
编辑:我知道有一个类似的帖子,但它没有回答我处理重复的问题。我希望该方法仅将重复项评估为一个数字。
此 [5,5,4,2] 和 [2, 6, 6, 2, 11] 作为输入的输出应分别为:
最大:5 第二大:4
最大:11 第二大:6
解决方案
当您找到新的 first_max 时,旧的 first_max 应该成为 second_max,正如 @Thierry 所暗示的那样。
推荐阅读
- javascript - WordPress Gutenberg Blocks 获取作者信息
- assembly - far jmp 从 NASM/Intel 到 GAS/AT&T 的转换
- linux - 在 SysV Centos6 中使用环境变量
- python - 带有itertools的格雷码顺序的笛卡尔积?
- ios - 在 ARKit 应用中显示 SwiftUI 视图
- node.js - 导入数据库架构时 Express.js 类型错误
- azure - 无法在 Azure 数据工厂中获取对 cosmos db 的查询的标量值
- angular - Why we use @Injectable({ providedIn: 'root' }) to reach class?
- reactjs - material-ui 小吃吧改变颜色而不为每种颜色制作新的?
- pytorch - PyTorch 的输入类型(torch.FloatTensor)和权重类型(torch.cuda.FloatTensor)应该是一样的但是我的数据已经推送到GPU