0

LeastFrequent - 从 System.in 输入的 10 个整数列表中输出出现频率最低的整数及其出现次数。如果列表中的多个整数出现频率最低,则输出任何出现频率最低的整数。将您的课程命名为 LeastFrequent。您可以假设所有 10 个整数都在 -100 到 100 的范围内。

import java.util.*;

public class LeastFrequent 
{
public static void main(String[] args) 
{
    Scanner scan = new Scanner(System.in);

    int[] arr = new int[10];
    int[] hold = new int[300];

    int x = 0;
    int count = 0;
    int a = 1;
    int least = 0;

    System.out.print("numbers: ");
    //adds 10 numbers to an array and counts occurrence
    for(int i=0;i<arr.length;i++)
    {
        arr[i] = scan.nextInt();
        hold[arr[i]]++;
    }

    for(int i=0;i<hold.length;i++)
    {
        if(hold[i] > 0)
        {

        }
    }


    System.out.println("least frequent: " + count + " occurs " + arr[count] + " times");
}
}

我让它向用户询问 10 个整数并将其放入数组中。我还让它计算输入数字的出现并将其存储在另一个数组中。我一直在寻找最不常见的。我知道我需要再次扫描第二个阵列,但我不知道如何。关于如何在跳过等于 0 的值的同时比较第二个数组的元素值的任何想法?

4

1 回答 1

3

首先,以下内容并不完全正确:

hold[arr[i]]++

如果我输入会发生什么-1

hold至于找到最少出现的元素,您需要找到大于零的最小值。当您迭代时hold,您可以跟踪迄今为止看到的最小的此类值及其索引。

最后,解决该问题的另一种方法是对数组进行排序。执行此操作后,相等的值将彼此相邻。这简化了重复计数。

于 2012-11-26T18:47:09.473 回答