2022年11月16日 星期三

[1497] Check If Array Pairs Are Divisible by k

有一點微妙的題目Orz
自以為很認真思考的在指上畫了好幾個二維矩陣想找出規律
結果跟DP 一點關係都沒有哈哈哈~~~(笑著流淚)
原來重點是算餘數出現的個數
比方說k=8的話, 如果有人餘數是1, 必定要有人餘數是7, 這樣1+7=8 然後它們才能組成一個pair 相加以後被8 整除. 

另外是負數很壞!竟然還要額外處理
而我感覺我現在真的很退化,  無法想到餘數是負的話再加上k 就是它的餘數個數計算的index 了...
好難Orz

bool canArrange(int* arr, int arrSize, int k){
int* countK= malloc(sizeof(int)*(k+1));
memset(countK,0,sizeof(int)*(k+1));
for (int i=0;i<arrSize;i++)
{
int tmpMod=arr[i]%k;
if (tmpMod<0)
tmpMod+=k;
countK[tmpMod]++;
}
for (int i=0;i<k;i++)
{
if (i==0 && countK[i]%2 == 0)
continue;
if (countK[i]!=countK[k-i])
return false;
}
return true;
}

沒有留言:

張貼留言