Algorithms 练习1.1.15

xiaoxiao2021-02-28  63

编写一个静态方法histogram,接受一个int数组a和一个int值M,要求返回大小为M的int数组,其中第i个元素为i在数组a中出现的次数。 代码如下:

import edu.princeton.cs.algs4.StdOut; public class Test { public static int[] histogram(int[] a, int M){ int[] result = new int[M]; for(int i = 0; i < M; i++){ int number = 0; for(int element : a){ if(i == element) number++; } result[i] = number; } return result; } public static void main(String[] args) { int[] a = {1, 1, 2, 3, 1, 7, 5, 3, 2, 2, 2}; int M = 8; int[] result = histogram(a, M); StdOut.print("a[]: "); for(int e : result){ StdOut.print(e + " "); } } }

jimmy的算法如下:

package com.jimmysun.algorithms.chapter1_1; public class Ex15 { public static int[] histogram(int[] a, int M) { int[] result = new int[M]; for (int i = 0; i < a.length; i++) { if (a[i] >= 0 && a[i] < M) { result[a[i]]++; } } return result; } public static void main(String[] args) { int[] a = { 1, 1, 2, 3, 1, 7, 5, 3, 2, 2, 2 }; int[] result = histogram(a, 8); for (int i = 0; i < result.length; i++) { System.out.printf("=", result[i]); } } }

可以很明显的看出,jimmy的算法复杂度比我的小了一个级别,还要多多努力。

转载请注明原文地址: https://www.6miu.com/read-59952.html

最新回复(0)