2610. 转换二维数组
题目链接:2610. 转换二维数组
方法:哈希表
解题思路
统计\(nums\)中每个元素的数量,然后每行输出其中的\(1\)个,直到元素全部输出。
代码
class Solution {
public:
vector<vector<int>> findMatrix(vector<int>& nums) {
int n = nums.size();
vector<int> cnt(n + 1); // 统计数量
for (auto &num : nums) cnt[num] ++ ;
vector<vector<int>> ans;
int flag = n;
while (flag) {
vector<int> level; // 输出当前行
for (int i = 1; i <= n; i ++ ) {
if (cnt[i] != 0) { // 输出1个
level.push_back(i);
cnt[i] -- ;
flag -- ;
}
}
ans.push_back(level);
}
return ans;
}
};
复杂度分析
时间复杂度:\(O(Cn),C = nums中最多的元素数量\);
空间复杂度:\(O(n)\)。

浙公网安备 33010602011771号