Java 马克斯;整数流中的最小值

Java 马克斯;整数流中的最小值,java,max,min,data-stream,Java,Max,Min,Data Stream,给定一个整数流(我只能遍历它们一次),找到最大值和最小值的最佳解决方案是什么?我想,如果我有足够的时间处理每个数字,最简单的解决方案就是简单地将最小值和最大值保存在一个单独的变量中,但是如果我不能处理它们中的每一个,那么最好的方法是什么呢?有没有比简单地保留max和min变量并跳过例如每秒一个数字更好的解决方案?如果您想要真正的最大值和最小值,只需使用变量跟踪它们即可 根据您的输入数据,概率最小值/最大值可能“足够精确”。因此,如果你只以50%的几率看每一个数字,那么你可能只有50%的几率得到确

给定一个整数流(我只能遍历它们一次),找到最大值和最小值的最佳解决方案是什么?我想,如果我有足够的时间处理每个数字,最简单的解决方案就是简单地将最小值和最大值保存在一个单独的变量中,但是如果我不能处理它们中的每一个,那么最好的方法是什么呢?有没有比简单地保留max和min变量并跳过例如每秒一个数字更好的解决方案?

如果您想要真正的最大值和最小值,只需使用变量跟踪它们即可


根据您的输入数据,概率最小值/最大值可能“足够精确”。因此,如果你只以50%的几率看每一个数字,那么你可能只有50%的几率得到确切的最小值或最大值,但可能已经有75%的几率至少得到第二大/最小值等。然而,计算随机数以进行无偏采样已经比查看所有数字的最小值/最大值要昂贵。每秒跳过一次是危险的:数据中可能存在严重困扰您的偶数/奇数模式。

您所说的“无法处理其中的每一个”是什么意思?如果你跳过了一些,并且最大值是你跳过的其中一个,你会怎么做?如果你在一张纸上有一个数字列表,你如何在不检查每个数字的情况下找到最大值和最小值??如果你运气不好,跳过了最大值,你至少看一次数字就不知道了,对吗?如果你不能迭代所有的数字,那么你怎么知道你得到的那些(
max
min
)是否真的是最大值和最小值?如果您想要准确地计算
min
max
,那么您需要遍历所有这些值。如果您想近似计算
min
max
,可以尝试一种称为Newton-Raphson的方法Method@JensBerfenfeldt将数据保存在排序数组中显然涉及查看所有元素,不适合流处理。