一、知识点:
计数排序、遍历
二、文字分析:
- 创建一个大小为3的数组
count
,用于统计每个品种牛的数量。初始时,所有元素均为0。 - 使用循环遍历牛的数组,统计每个品种牛的数量。将计数结果保存到
count
数组中,即count[i]
表示品种为i的牛的数量。 - 创建一个与原数组相同大小的结果数组
sortedCows
,用于存储排序结果。 - 使用两层嵌套循环,将统计结果按照品种顺序填充到
sortedCows
数组中。外层循环遍历品种,内层循环遍历数量。 - 返回排序好的牛的数组
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; } }