大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

排序,数组处理

题目解答方法的文字分析

这个问题可以使用计数排序的思想来解决。我们可以创建一个长度为 k 的计数数组,用来统计每种牛的数量。然后,我们可以根据计数数组的信息重新组织牛的顺序。

首先,我们遍历一遍原始牛群,统计每种牛的数量。然后,根据计数数组的信息,我们可以重新填充原始牛群,将相同品种的牛按顺序排列。

具体做法是:遍历计数数组,按照计数数组的索引(品种)和对应的数量,依次填充原始牛群。这样,就能够保证相同品种的牛都相邻,并且按照顺序排列。

本题解析所用的编程语言

C++

完整且正确的编程代码

#include <vector>

using namespace std;

class Solution {
public:
    vector<int> sortCowsIII(vector<int>& cows, int k) {
        vector<int> count(k, 0); // 计数数组,记录每种牛的数量
        vector<int> sortedCows(cows.size()); // 用于存放排序后的牛群

        // 统计每种牛的数量
        for (int i = 0; i < cows.size(); ++i) {
            count[cows[i]]++;
        }

        int index = 0;
        // 重新填充原始牛群,按顺序排列
        for (int i = 0; i < k; ++i) {
            while (count[i] > 0) {
                sortedCows[index] = i;
                index++;
                count[i]--;
            }
        }

        return sortedCows;
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!