模擬試験


数学は数学を放棄する人の略語である.「囚人3人組」は模擬試験で数学の問題を全部撮りたいと思っている.最初の問題から最後の問題まで、執胞子は以下の通りである.
1番捕手の撮り方:1,2,3,4,5,1,2,3,4,5...
2番捕手の撮り方:2、1、2、3、2、4、2、5、2、2、3、2、4、2、5...
3番捕手の撮り方:3,3,1,1,2,2,4,5,5,3,3,1,2,2,4,5,5...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.
せいげんじょうけん
  • 試験には最大10000問が含まれています.
  • 題の正解は1,2,3,4,5の1つです.
  • 点数が一番高い人が何人かいる場合は、返される値を昇順に並べてください.
  • I/O例
    answersreturn[1,2,3,4,5][1][1,3,2,4,2][1,2,3]
    I/O例説明
    I/O例#1
  • 捕手1はすべての質問に答えた.
  • 捕獲者2はすべての問題を間違えた.
  • 捕獲者3はすべての問題を間違えた.
  • だから一番多くの質問に答えた人は水泡子です.
    I/O例#2
  • 誰もが2つの問題に答えた
  • コード#コード#

    import java.util.*;
    
    class Solution {
        public int[] solution(int[] answers) {
    		int[] arr1 = { 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 };
    		int[] arr2 = { 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5 };
    		int[] arr3 = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };
    
    		int answer1 = 0, answer2 = 0, answer3 = 0, score = 0;
    
    		for (int i = 0; i < answers.length; i++) {
    			answer1 += (arr1[i % arr1.length] == answers[i] ? 1 : 0);
    			answer2 += (arr2[i % arr2.length] == answers[i] ? 1 : 0);
    			answer3 += (arr3[i % arr3.length] == answers[i] ? 1 : 0);
    		}
    
    		if (answer1 == 0 && answer2 == 0 && answer3 == 0) {
    			int[] answer = {};
    			return answer;
    		}
    
    		score = Math.max(answer3, Math.max(answer1, answer2));
    
    		ArrayList<Integer> answerArr = new ArrayList<>();
    		if (score == answer1) {
    			answerArr.add(1);
    		}
    		if (score == answer2) {
    			answerArr.add(2);
    		}
    		if (score == answer3) {
    			answerArr.add(3);
    		}
    
    		int[] answer = new int[answerArr.size()];
    
    		for (int i = 0; i < answer.length; i++) {
    			answer[i] = answerArr.get(i).intValue();
    		}
    
    		return answer;
    	}
    }
    解を解くときは変数をたくさん書いたような気がしますが、よくて、解と受け取った多くのコードの差は多くありません.
    違いはarrayListがint配列に変換されたとき、私は繰り返し文を回して、とても良くて、多くのコードはstreamを書きました.
    でもコメントを見るとStreamを書くと遅くなります.早くしたほうがいいみたい

    整理する

  • InValue():Intergerオブジェクトからint値
  • を取得する.