思路:行数不超过数字出现的最多次数。实例1就出现最多次数的数字是1,出现三次,所以最多就只能有三行。可以用哈希表存每个数字出现的次数,枚举完每行后,每个数字的次数减1。
* vector<vector<int>> a; //这里相当于二维数组int a[n][n];
class Solution {
public:
vector<vector<int>> findMatrix(vector<int>& nums) {
vector<vector<int>> ans;
unordered_map<int, int> cnt;
for (auto c: nums)
cnt[c] ++ ;
int n = nums.size();
while (n)
{
vector<int> v;
for (int i = 1; i <= 200; i ++ ) {
if (cnt[i]) {
v.push_back(i);
cnt[i] -- , n -- ;
}
}
ans.push_back(v);
}
return ans;
}
};