このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文について説明する。
異なる数からなる集合において、中央値Mというのは、Mより大きい数の個数と小さい数の個数が等しくなることを言う。例えば{1, 4, 2, 5, 7}という集合における中央値は4である。この定義により、{1, 4, 2, 5}という集合は中央値は存在しないことになる。numbers[]という異なる数値からなる配列が集合として与えられたとき、中央値を返せ。もし中央値が存在しないのであれば-1を返せ。
私の解答はこちら。
import java.util.Arrays; public class MedianOfNumbers { public int findMedian(int[] numbers) { if( numbers.length % 2 == 0 ) return -1; // 要素数が偶数なら中央値は存在しない Arrays.sort(numbers); // ソートして return numbers[numbers.length/2]; // 中央の添え字の値を返す } }
得点は249.34/250、中央値は約244点。全体的に超高速。
0 件のコメント:
コメントを投稿