模擬試験


  • 地図を使用しました.最初はdata classを作成してcomparableを継承しようとしましたが、最大値の値を見つければいいので、メソッドを線形ループに変換します.
  • kotlinでlistを使用する場合、空のlistにはmutablelistOfを使用すべきだというプラス記号の不正確な苦衷があります.
  • 他の人の解答では、地図から非最大値を削除し、結果地図のリストを並べ替えて配列に再マッピングする関数型コードを見ましたが、問題数が10万を超えると、それほど効率的ではないように見えます...私がまだ足りないかもしれませんが...
  •     fun solution(answers: IntArray): IntArray {
            var mStudent1 = intArrayOf(1, 2, 3, 4, 5)
            val mStudent1IdxParser = mStudent1.size
            var mStudent2 = intArrayOf(2, 1, 2, 3, 2, 4, 2, 5)
            val mStudent2IdxParser = mStudent2.size
            var mStudent3 = intArrayOf(3, 3, 1, 1, 2, 2, 4, 4, 5, 5)
            val mStudent3IdxParser = mStudent3.size
    
            var mSolvedCntPerStudent = mutableMapOf<Int, Int>()
            mSolvedCntPerStudent[1] = 0
            mSolvedCntPerStudent[2] = 0
            mSolvedCntPerStudent[3] = 0
            var mMax = 0
            for (i in answers.indices) {
                if (answers[i] == mStudent1[i % mStudent1IdxParser]) {
                    var mCurrent = mSolvedCntPerStudent[1]
                    if (mCurrent != null) {
                        mSolvedCntPerStudent[1] = mCurrent + 1
                        if (mMax < mCurrent + 1) mMax = mCurrent + 1
                    }
                }
                if (answers[i] == mStudent2[i % mStudent2IdxParser]) {
                    var mCurrent = mSolvedCntPerStudent[2]
                    if (mCurrent != null) {
                        mSolvedCntPerStudent[2] = mCurrent + 1
                        if (mMax < mCurrent + 1) mMax = mCurrent + 1
                    }
                }
                if (answers[i] == mStudent3[i % mStudent3IdxParser]) {
                    var mCurrent = mSolvedCntPerStudent[3]
                    if (mCurrent != null) {
                        mSolvedCntPerStudent[3] = mCurrent + 1
                        if (mMax < mCurrent + 1) mMax = mCurrent + 1
                    }
                }
            }
            
           var mTempList = mutableListOf<Int>()
           for (it in mSolvedCntPerStudent.entries) {
               if (mSolvedCntPerStudent[it.key] == mMax) {
                   mTempList.add(it.key)
               }
           }
           return mTempList.toIntArray()
        }