mirror of
https://github.com/20kaushik02/leetcode-gulag.git
synced 2025-12-06 09:34:07 +00:00
77 lines
1.4 KiB
C++
77 lines
1.4 KiB
C++
#include "soln.hpp"
|
|
|
|
bool Solution::DEBUG = true;
|
|
|
|
bool Solution::canArrange(vector<int> &arr, int k)
|
|
{
|
|
// vector<int> result = vector<int>();
|
|
// for (int num = 0; num < arr.size(); num++)
|
|
// {
|
|
// bool found_pair = false;
|
|
// for (int existing = 0; existing < result.size(); existing++)
|
|
// {
|
|
// if ((arr[num] + result[existing]) % k == 0)
|
|
// {
|
|
// found_pair = true;
|
|
// dbg("pop", result[existing]);
|
|
// result.erase(find(result.begin(), result.end(), result[existing]));
|
|
// break;
|
|
// }
|
|
// }
|
|
// if (!found_pair)
|
|
// {
|
|
// result.emplace_back(arr[num]);
|
|
// dbg("insert", arr[num]);
|
|
// }
|
|
// }
|
|
// return !(result.size() > 0);
|
|
|
|
vector<int> rems;
|
|
int zeros = 0;
|
|
for (int i = 0; i < arr.size(); i++)
|
|
{
|
|
if (arr[i] % k == 0)
|
|
{
|
|
zeros++;
|
|
}
|
|
else if (arr[i] % k < 0)
|
|
{
|
|
rems.emplace_back((arr[i] % k) + k);
|
|
}
|
|
else
|
|
{
|
|
rems.emplace_back(arr[i] % k);
|
|
}
|
|
}
|
|
if (zeros % 2)
|
|
{
|
|
return false;
|
|
}
|
|
unordered_map<int, int> result;
|
|
for (int i = 0; i < rems.size(); i++)
|
|
{
|
|
if (result.find(k - rems[i]) != result.end() && result[k - rems[i]] > 0)
|
|
{
|
|
result[k - rems[i]]--;
|
|
dbg("pop", k - rems[i]);
|
|
}
|
|
else
|
|
{
|
|
result[rems[i]] = result[rems[i]] + 1;
|
|
dbg("insert", rems[i]);
|
|
}
|
|
}
|
|
for (auto it = result.begin(); it != result.end(); it++)
|
|
{
|
|
if (it->second > 0)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool Solution::test(vector<int> &arr, int k, bool answer)
|
|
{
|
|
return canArrange(arr, k) == answer;
|
|
} |