classSolution { public: intminGroupsForValidAssignment(vector<int>& nums){ unordered_map<int, int> cnt; for (int x : nums) { cnt[x]++; } int k = min_element(cnt.begin(), cnt.end(), [](constauto& a, constauto& b) { return a.second < b.second; })->second; for (; ; k--) { int ans = 0; for (auto &[_, c] : cnt) { if (c / k < c % k) { ans = 0; break; } ans += (c+k ) / (k+1); } if (ans) { return ans; } } } };