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]; } }
これでやってみると結果は以下の通りで、問題ないようです。