题解 | #牛的品种排序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秋招刷过的题

全部评论

相关推荐

但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
_mos_:我以为手抄报简历就已经很顶了,没想到还有表格简历
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
07-02 10:44
门头沟学院 C++
码农索隆:太实诚了,告诉hr,你能实习至少6个月
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务