思路
- 筛选元素:使用
filter
函数可以简洁地筛选出大于阈值的元素。由于数据量很大,应尽量减少中间数据的存储,避免不必要的内存开销。
- 排序:Kotlin的
sort
函数对基本类型数组进行排序性能较好,这里可以使用。
- 计算相邻元素差值并找出最大差值:遍历排序后的数组,计算相邻元素差值并记录最大值。为了优化性能,可以在遍历过程中直接更新最大差值,避免额外的数组存储差值。
代码实现
fun main() {
val largeArray = DoubleArray(1000000) { (Math.random() * 2).toDouble() }
val threshold = 0.5
val filteredArray = largeArray.filter { it > threshold }.toDoubleArray()
filteredArray.sort()
var maxDiff = 0.0
for (i in 1 until filteredArray.size) {
val diff = filteredArray[i] - filteredArray[i - 1]
if (diff > maxDiff) {
maxDiff = diff
}
}
println("最大差值: $maxDiff")
}