覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

codility - Arrays OddOccurrencesInArray

codility の OddOccurrencesInArrayを解いてみます。

問題の概要

  • インプット(引数)
    • 整数の配列
      • 配列の要素の整数は奇数
      • 配列の要素数は奇数個
      • 要素の値同士のペアができるが、1要素だけペアができない値が含まれている
      • 例:[9, 3, 9, 3, 9, 7, 9]
  • アウトプット(戻り値)
    • ペアができなかった要素の値
    • 例にあげた引数の場合、7 がアウトプットになります


解答

以下の方針でやってます。

  • まず配列をソートする。
  • ソートされているので、基本的に偶数番目と奇数番目の要素の値は一致する(ペアになる)はず。
  • ペアにならなかったら、その偶数番目の値が1個だけしか存在しないものということになるので、それがそのまま答え
  • 最後の最後まで進んだら最終要素が答えとなる
import java.util.Arrays;

class Solution {

    public int solution(int[] array) {
        Arrays.sort(array);

        for (int i = 0; i < array.length - 1;){
            if (array[i] != array[i + 1]) {
                return array[i];
            }
            i = i + 2;
        }
        return array[array.length - 1];
    }
}


これでやってみると結果は以下の通りで、問題ないようです。

f:id:nini_y:20190830204710p:plain