2012年1月10日火曜日

TopCoder SRM308 Div2 250Pts

この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 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計