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