잠이안와 2022. 11. 21. 22:34
from collections import Counter
def solution(array):
    c = Counter(array)
    order = c.most_common()
    maximum = order[0][1]
    modes = []
    for num in order:
        if num[1] == maximum:
            modes.append(num[0])
    if len(modes)>=2:
        return -1
    else:
        return modes[0]

 

object Solution {
    def sol(array: List[Int]): Int = {
  def counterlist(array: List[Int], idx: Int, count: Int = 1): List[Int] = {
    if (idx == array.length - 1) count :: Nil
    else {
      if (array(idx) == array(idx + 1)) counterlist(array, idx + 1, count + 1)
      else count :: counterlist(array, idx + 1, 1)
    }
  }

  def counter(idx: Int, value_idx: Int, count: Int = 1, max: Int = 1): Int = {
    if (idx == array.length - 1) {
      if (count > max) array(idx)
      else array(value_idx)
    }
    else {
      if (array(idx) == array(idx + 1)) counter(idx + 1, value_idx, count + 1,max)
      else {
        if (count > max) counter(idx + 1, idx, 1, count)
        else counter(idx + 1, value_idx, 1, max)
      }
    }
  }
  if (array.length==1) array(0)
  else {
    val lst = counterlist(array, 0).sorted
    val len: Int = lst.length
    if (lst(len - 1) == lst(len - 2)) -1
    else counter(0, 0)
  }
}
    def solution(array: Vector[Int]): Int = {
        val thislst = array.toList
        sol(thislst.sorted)
    }
}