majianyu
4/27/2018 - 8:48 AM

EX1.1.15

编写一个静态方法 histogram(),接受一个整型数组 a[] 和一个整数 M 为参数并发挥一个大小为 M 的数组,其中第 i 个元素的值为整数 i 在参数数组中出现的次数. 如果 a[] 中的值均在 0 到 M-1 之间,返回数组中所有元素之和应该和 a.length 相等.

package main

import "fmt"

func main() {
    a := []int{1, 1, 2, 2, 3, 4, 5, 6, 7, 7}
    arr := histogram(a, len(a))
    fmt.Println(arr)
}
func histogram(a []int, M int) []int {
    arr := make([]int, M)
    for _,v := range a {
        if v >= 0 && v < M {
            arr[v] ++
        }
    }
    return arr
}

def histogram(a: list, M: int) -> list:
    l = [0 for i in range(M)]
    for v in a:
        if v >=0 and v < M:
            l[v] += 1
    return l


if __name__ == '__main__':
    a = [1, 2, 3, 3, 3, 4, 5, 6]
    l = histogram(a, len(a))
    for i,v in enumerate(l):
        print(i,v)
package com.test;

public class Test {
    public static void main(String[] args) {
        int[] a = {1,3,3,1,1,2,1,1,1,1};
        int[] arr = histogram(a,a.length);
        for (int n : arr) {
            System.out.println(n);
        }
    }


    private static int[] histogram(int[] a, int M) {
        int[] arr = new int[M];
        for (int i = 0; i < a.length; i++) {
            if (a[i] >= 0 && a[i] < M) {
                arr[a[i]]++;
            }
        }
        return arr;
    }

}