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

牛的品种排序III

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

大家好,我是开车的阿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!

阿Q的题解 文章被收录于专栏

阿Q秋招刷过的题

全部评论

相关推荐

联通 技术人员 总包不低于12
点赞 评论 收藏
分享
Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
我即大橘:耐泡王
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务