Number Frequency Range Calculator


Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type

題目說明

請撰寫一個程式來分析數字在集合中的出現頻率特性。程式會讀取一個整數 n,接著讀取 n 個整數組成一個數列。 程式需要計算出數列中各數字出現的次數,並找出出現次數的最大值和最小值之間的差距(即最高頻率與最低頻率的差)。

如果數列中所有數字出現次數都相同,則輸出 0。如果數列中只有一種數字(即使出現多次),仍應輸出 0,因為最高頻率與最低頻率相同。
請完成程式中的 calculateFrequencyRange 函數,該函數接收一個整數陣列作為參數,並返回數列中數字出現次數的最大值和最小值之間的差距。

除了實作 calculateFrequencyRange 函數外,請勿修改程式中其他已經寫好的部分,違反此規則者,無論自動評測結果為何,在考試中均不計分。但允許輕微的排版差異。

程式模板

import java.util.Scanner;

public class FrequencyRangeCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 讀取數字的數量
        int n = scanner.nextInt();
        int[] numbers = new int[n];

        // 接著讀取 n 個數字,並將它們存儲在 numbers 陣列中
        for (int i = 0; i < n; i++) {
            numbers[i] = scanner.nextInt();
        }

        // 計算數列中數字出現次數的最大值和最小值之間的差距
        int result = calculateFrequencyRange(numbers);

        System.out.println(result);

        scanner.close();
    }

    // 這個函數計算數列中數字出現次數的最大值和最小值之間的差距
    // 參數是一個整數陣列,返回值是一個整數,表示出現次數的最大值和最小值之間的差距
    public static ... calculateFrequencyRange(...) {
        // 請在此處實作函數
    }
}

輸入值的格式

  1. 第一個數字輸入一個正整數 n (1 ≤ n ≤ 100),表示接下來要輸入的整數數量。
  2. 後面接著輸入 n 個整數,以空格分隔,每個整數的範圍為 (-100 ≤ 整數 ≤ 100)

輸出值的格式

輸出一個整數,表示數列中數字出現次數的最大值和最小值之間的差距。

邊界條件提示

  • n 可能為 1,表示數列中只有一個數字,此時應輸出 0。
  • 數列中可能有重複的數字,也可能全部都是相同的數字。
  • 數列中的數字可能是負數或是零。
  • 如果數列中所有不同的數字出現次數都相同,則輸出 0。

範例輸入 #1

7 1 2 2 3 3 3 4

範例輸出 #1

2

說明:數字 1 出現 1 次,數字 2 出現 2 次,數字 3 出現 3 次,數字 4 出現 1 次。最高頻率是 3(數字 3),最低頻率是 1(數字 1 和 4),差距為 3-1=2。

範例輸入 #2

4 5 6 7 8

範例輸出 #2

0

說明:每個數字都只出現 1 次,最高頻率與最低頻率都是 1,差距為 1-1=0。


Comments

There are no comments at the moment.