Kotlin 改进计数时间函数

Kotlin 改进计数时间函数,kotlin,Kotlin,我是Kotlin(和Java)的新手。为了学习这门语言,我试图从一个网站上解决一些问题 这个问题非常简单直接,函数必须计算一个数组中包含的最大值的多少倍。我的函数也适用于较小的数组,但似乎超出了较大数组允许的时间限制(错误:您的代码没有在时间限制内执行) 有趣的问题(输入阵列:数组):Int{ //在这里编写代码 val n:Int=inputArray.count{it==inputArray.max()} 返回n } 因此,在我努力改进的过程中,我并不是在寻找一个更快的解决方案,而是在寻找

我是Kotlin(和Java)的新手。为了学习这门语言,我试图从一个网站上解决一些问题

这个问题非常简单直接,函数必须计算一个数组中包含的最大值的多少倍。我的函数也适用于较小的数组,但似乎超出了较大数组允许的时间限制(错误:您的代码没有在时间限制内执行)

有趣的问题(输入阵列:数组):Int{ //在这里编写代码 val n:Int=inputArray.count{it==inputArray.max()} 返回n } 因此,在我努力改进的过程中,我并不是在寻找一个更快的解决方案,而是在寻找一些关于我可以自己寻找更快解决方案的主题的提示


非常感谢

在无序数组中,您需要触摸每个元素以计算
inputArray.max()
。因此,
inputArray.count()
遍历所有元素并调用遍历所有元素的
max()

因此,对于n个元素,运行时间增加了n^2

inputArray.max()
存储在一个额外的变量中,就有了一个线性运行时

val max = inputArray.max()
val n: Int = inputArray.count{ it == max }

实际上很奇怪,编译器无法对其进行优化。代码是由网站编译的,因此我认为缺少的优化是解决问题挑战的一部分
val max = inputArray.max()
val n: Int = inputArray.count{ it == max }