一、知识点:
计数排序、遍历
二、文字分析:
- 创建一个大小为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;
}
}

京公网安备 11010502036488号