【ccf-201612-1】中間數

試題編號: 201612-1
試題名稱: 中間數
時間限制: 1.0s
內存限制: 256.0MB
問題描述:
問題描述
  在一個整數序列a1, a2, …, an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其爲中間數。在一個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。
  給定一個整數序列,請找出這個整數序列的中間數的值。
輸入格式
  輸入的第一行包含了一個整數n,表示整數序列中數的個數。
  第二行包含n個正整數,依次表示a1, a2, …, an。
輸出格式
  如果約定序列的中間數存在,則輸出中間數的值,否則輸出-1表示不存在中間數。
樣例輸入
6
2 6 5 6 3 5
樣例輸出
5
樣例說明
  比5小的數有2個,比5大的數也有2個。
樣例輸入
4
3 4 6 7
樣例輸出
-1
樣例說明
  在序列中的4個數都不滿足中間數的定義。
樣例輸入
5
3 4 6 6 7
樣例輸出
-1
樣例說明
  在序列中的5個數都不滿足中間數的定義。
評測用例規模與約定
  對於所有評測用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。
代碼:


import java.util.Scanner;


public class MiddleNum {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] data=new int[n];
        for (int i = 0; i < n; i++) {
            data[i]=sc.nextInt();
        }

        int less=0;
        int more=0;
        Boolean hasmiddle=false;
        int middle=0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if(j!=i)
                {
                    if(data[j]<data[i]){
                        less++;
                    }else if(data[j]>data[i]){
                        more++;
                    }   
                }
            }

            if(less==more){
                middle = data[i];
                hasmiddle=true;
            }
            less=0;
            more=0;
        }

        if(hasmiddle==false){
            System.out.println(-1);
        }else{
            System.out.println(middle);;
        }
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章