一、知识点:

计数排序、遍历

二、文字分析:

  1. 创建一个大小为3的数组count,用于统计每个品种牛的数量。初始时,所有元素均为0。
  2. 使用循环遍历牛的数组,统计每个品种牛的数量。将计数结果保存到count数组中,即count[i]表示品种为i的牛的数量。
  3. 创建一个与原数组相同大小的结果数组sortedCows,用于存储排序结果。
  4. 使用两层嵌套循环,将统计结果按照品种顺序填充到sortedCows数组中。外层循环遍历品种,内层循环遍历数量。
  5. 返回排序好的牛的数组sortedCows

时间复杂度为O(n),其中n是牛的数量。空间复杂度为O(k),其中k是牛的品种数量,这里是3。

三、编程语言:

java

四、正确代码:

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param cows int整型一维数组
     * @return int整型一维数组
     */
    public int[] sortCows(int[] cows) {
        int[] count = new int[3]; // 品种牛的计数数组,初始为0
        int[] sortedCows = new int[cows.length]; // 结果数组,保存排序后的牛的数组

        // 统计每个品种牛的数量
        for (int i = 0; i < cows.length; i++) {
            count[cows[i]]++;
        }

        int index = 0; // 结果数组的索引

        // 按照品种顺序填充结果数组
        for (int i = 0; i < count.length; i++) {
            for (int j = 0; j < count[i]; j++) {
                sortedCows[index] = i;
                index++;
            }
        }

        return sortedCows;
    }
}