题目链接
分析
使用一个哈希表记录每个数字出现的次数,然后放到对应行的数组里即可
由于题目保证数据在 $1-n$,所以可以使用数组存储加速运算
代码实现
class Solution {
public:
vector<vector<int>> findMatrix(vector<int>& nums) {
int n = nums.size();
vector<int> cnt(n + 1, 0);
vector<vector<int>> ans;
for(int i : nums) {
if(cnt[i] == ans.size()) {
ans.emplace_back();
}
ans[cnt[i]++].emplace_back(i);
}
return ans;
}
};
复杂度分析
- 时间复杂度:$O(n)$
- 空间复杂度:$O(n)$