一、知识点:
计数排序
二、文字分析:
使用计数排序的思想。首先,遍历一次数组,统计每个品种牛的数量,然后根据统计结果构造排序好的数组。
通过遍历数组两次来完成排序。时间复杂度为O(n),其中n是牛的数量。空间复杂度为O(k),其中k是牛的品种数量。
三、编程语言:
java
四、正确代码:
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param cows int整型一维数组 * @param k int整型 * @return int整型一维数组 */ public int[] sortCowsIII(int[] cows, int k) { int[] count = new int[k]; // 品种牛的计数数组,初始为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; } }