CCF--中間數--用JAVA威尼斯人平臺出租語言實現
阿新 • • 發佈:2018-07-10
大於 ref import 一行 排序 代碼 sys ccf 繼續 問題描述威尼斯人平臺出租 haozbbs.com Q1446595067
在一個整數序列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。
在一個整數序列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。
這道題方法有很多,我只是寫出腦袋中第一念頭的做題思路。。
思路:
1.將輸入的數放進數組中,並且排序
2.找出數組中的中間數,註意數組的長度和下標不同。
3.通過比較中間數和數組中的數,大於中間數的數是否==小於中間數的數,相等則表示這個數是中間數,不等則輸入-1
代碼:
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { int a = 0;//小於計數器 int b =0;//大於計數器 Scanner sc = new Scanner(System.in); int n = sc.nextInt();//n是整數的個數 //存入數組中,並且排序 int arr[] =new int [n]; for(int i =0;i<arr.length;i++){ arr[i] = sc.nextInt(); } Arrays.sort(arr); int mid = (arr.length-1)/2;//數組的長度是從1開始,數組下標是從0開始,所以需要-1 for (int i = 0; i < arr.length; i++) { if(arr[mid]>arr[i]){ //中間數大於數組中的數記為a a++; } if(arr[mid]<arr[i]){ //中間數小於數組中的數記為b b++; } } if(a==b){ //相等則表明中間數左右兩邊個數相同,這個中間數是真正的中間數 System.out.println(arr[mid]); }else{ //否則輸入-1 System.out.println(-1); } } }
如有不對地方,請指出批評...後續繼續更新用java實現ccf例題
CCF--中間數--用JAVA威尼斯人平臺出租語言實現