题解 | #牛的品种排序I#
牛的品种排序I
https://www.nowcoder.com/practice/e3864ed7689d460c9e2da77e1c866dce
可以使用计数排序的思想。
首先,我们可以遍历一次牛群,统计黑牛和白牛各自的数量。然后,根据统计结果构建的有序牛群。
具体步骤如下:
- 创建两个变量
count[2]
,用于记录黑牛和白牛的数量,初始值都为0。 - 第一次历牛群,统计牛和白牛的数量,分别累加到
count[0]
和count[1
中。 - 创建一个新的有序牛群
sortedCows
,其大小为牛群的长度。初始化Cows
中的每元素都为0。 - 依次将黑牛和白牛按照统计数量放入
sortedCows
中,放黑牛,再放白牛。
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param cows int整型vector * @return int整型vector */ vector<int> sortCows(vector<int>& cows) { int n = cows.size(); // 统计黑牛和白牛的数量 int count[2] = {0}; // count[] 统计黑牛数量,count[1]计白牛数量 for (int i = 0; i < n; ++i) { count[cows[i]]++; } // 构建有序牛群 vector<int> sortedCows(n); int index = 0; for (int i= 0; i < count[0]; ++i) { sortedCows[index++] = 0; // 放置黑牛 } for(int i = 0;i < count[1];++i) { sortedCows[index++] = 1; // 放置白牛 } return sortedCows; } };