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