题解 | #牛的品种排序I#

牛的品种排序I

https://www.nowcoder.com/practice/e3864ed7689d460c9e2da77e1c866dce

可以使用计数排序的思想。

首先,我们可以遍历一次牛群,统计黑牛和白牛各自的数量。然后,根据统计结果构建的有序牛群。

具体步骤如下:

  1. 创建两个变量 count[2],用于记录黑牛和白牛的数量,初始值都为0。
  2. 第一次历牛群,统计牛和白牛的数量,分别累加到 count[0] 和 count[1 中。
  3. 创建一个新的有序牛群 sortedCows,其大小为牛群的长度。初始化 Cows 中的每元素都为0。
  4. 依次将黑牛和白牛按照统计数量放入 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;
    }
};

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务