我在scala中编写了求和代码以找到多数元素(出现超过n/2次的元素,其中'n'是数组中的元素数量。我想知道哪里有功能/scala原生样式的版本(包括匹配案例和转换,如“map/”flatmap”等)用于以下包含循环的命令式scala代码。我使用的代码:
object MajorityElement{
def printMajority(arr:Array[Int]) ={
var cand:Int=findCandidate(arr);
if(isMajority(arr,cand))
println(cand);
else
println("No Majority Element");
}
def isMajority(arr:Array[Int],Cand:Int):Boolean ={
var count=0;
for(i <- 0 until arr.length){
if(arr(i)== Cand)
count+=1;
}
if (count > arr.size/2)
return true;
else false
}
def findCandidate(arr:Array[Int]):Int ={
val s = arr.size
var majIndex:Int = 0;
var count = 1;
for(i <- 0 until arr.length){
if(arr(majIndex) == arr(i))
count+=1;
else
count-=1;
if(count==0)
{
majIndex = i;
count =1
}
}
return arr(majIndex);
}
}
请让我知道,对于任何场景,是否可以在 scala(使用匹配案例)中将命令式样式编写/转换为功能版本。