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)\)

posted @ 2023-04-09 01:06  lixycc  阅读(23)  评论(0)    收藏  举报