09-04-2015 Array

来源:互联网 发布:买大班模型 淘宝店 编辑:程序博客网 时间:2024/04/29 07:27

这是一道看似简单的题目。

BJP3 Exercise 7.5: mode

Status:not solved You have solved this problem; good work!
Added by:Whitaker Brand on 2013/04/01
Language:Java
Keywords:arrays, traversals, cumulative algorithms
Popularity:41 likes icon Like

Write a method called mode that returns the most frequently occurring element of an array of integers. Assume that the array has at least one element and that every element in the array has a value between 0 and 100 inclusive. Break ties by choosing the lower value.

For example, if the array passed contains the values {27, 15, 15, 11, 27}, your method should return 15. (Hint: You may wish to look at the Tally program from earlier in this chapter to get an idea of how to solve this problem.)


我自己的答案,还对了,但是太多for loop了。

public static int mode(int[] arr) {
        int max = 0;
        int maxFreq = 0;

        Arrays.sort(arr);
        max = arr[arr.length-1];

        int[] count = new int[max + 1];

        for (int i = 0; i < arr.length; i++) {
            count[arr[i]]++;
        }

         for (int i = 0; i < count.length; i++) {
            if (count[i] > maxFreq) {
                maxFreq = count[i];
            }
        }
        
        for (int i = 0; i < count.length; i++) {
            if (count[i] == maxFreq) {
                return i;
            }
        }
        return -1;
    }

0 0
原创粉丝点击