多数要素(「n」が配列内の要素の数であるn / 2回以上出現する要素)を見つけるためにscalaでsumコードを書きました。機能/ 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 (一致ケースを使用する) で関数型バージョンに記述/変換できるかどうかを教えてください。