cpp: add “2610. Convert an Array Into a 2D Array With Conditions”
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
9af5c9e61e
commit
f8f23de17e
1 changed files with 35 additions and 0 deletions
35
cpp/convert-an-array-into-a-2d-array-with-conditions.cpp
Normal file
35
cpp/convert-an-array-into-a-2d-array-with-conditions.cpp
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
std::vector<std::vector<int>> findMatrix(const std::vector<int>& nums) {
|
||||||
|
// count the numbers
|
||||||
|
std::map<int, int> freqs;
|
||||||
|
for (auto x : nums) {
|
||||||
|
++freqs[x];
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::vector<int>> matrix;
|
||||||
|
|
||||||
|
bool elements_left = true;
|
||||||
|
while (elements_left) {
|
||||||
|
elements_left = false;
|
||||||
|
|
||||||
|
std::vector<int> row;
|
||||||
|
for (auto& [num, count] : freqs) {
|
||||||
|
if (count <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
--count;
|
||||||
|
row.push_back(num);
|
||||||
|
elements_left = elements_left || count > 0;
|
||||||
|
}
|
||||||
|
matrix.push_back(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
return matrix;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in a new issue