leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
2397.cpp (927B)
0 class Solution {
1 public:
2 int maximumRows(const vector<vector<int>> &matrix, const int numSelect) const {
3 const int n = size(matrix), m = size(matrix[0]);
4 unordered_map<uint16_t, int> um;
6 for (int i = 0; i < n; i++) {
7 uint16_t crnt = 0, cnt = 0;
8 for (int j = 0; j < m; j++) {
9 crnt |= matrix[i][j] << j;
10 cnt += matrix[i][j];
11 }
12 if (cnt > numSelect) continue;
13 um[crnt]++;
14 }
16 uint16_t res = 0, crnt = (1 << numSelect) - 1;
17 while (crnt <= 1 << m) {
18 uint16_t count = 0;
19 for (const auto [k, v] : um) {
20 if ((k & ~crnt) == 0) count += v;
21 }
22 res = max(res, count);
24 uint16_t t = crnt | (crnt - 1);
25 crnt = (t + 1) | (((~t & -~t) - 1) >> (__builtin_ctz(crnt) + 1));
26 }
28 return res;
29 }
30 };