题意
传送门 LeeCode 1497. 检查数组对是否可以被 k 整除
题解
把数组恰好分成
n
/
2
n/2
n/2 对,以使每对数字的和都能够被
k
k
k 整除,即对于每对数字
x
,
y
x,y
x,y 都有
x
+
y
≡
0
m
o
d
(
k
)
x+y\equiv 0\ mod(k)
x+y≡0 mod(k)
遍历一遍数组,统计各元素模
k
k
k 的值,判断余数为
x
(
1
≤
x
≤
k
−
1
)
x(1\leq x \leq k-1)
x(1≤x≤k−1) 与
k
−
x
k-x
k−x 的元素数是否相等,余数为
0
0
0 判断元素数是否为偶数。
class Solution
{
public:
bool canArrange(vector<int> &arr, int k)
{
vector<int> num(k);
for (int x : arr) num[(x % k + k) % k]++;
if (num[0] & 1) return 0;
for (int i = 1; i < k; i++)
{
if (num[i] == 0) continue;
if (num[i] != num[k - i]) return 0;
}
return 1;
}
};
版权声明:本文为neweryyy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。