2022年11月21日 星期一

[2006] Count Number of Pairs With Absolute Difference K

先貼個暴力解.......
int countKDifference(int* nums, int numsSize, int k){
int count =0;
for (int i=0;i<numsSize-1;i++)
{
for (int j=i+1;j<numsSize;j++)
{
if (abs(nums[i]-nums[j])==k)
count++;
}
}
return count;
}

更新版嗎?!不過因為測資數量不大的關係,好像不會看出它有快多少. 
先用一個hash存每個數字出現的次數,然後你懂的。
(WTF  XD)

int countKDifference(int* nums, int numsSize, int k){
int *hash= calloc(101, sizeof(int));
int count =0;
for (int i=0;i<numsSize;i++)
hash[nums[i]]++;

for (int i=0;i<numsSize;i++)
{
if ((nums[i]>k) && (hash[nums[i]-k]>0))
count+=hash[nums[i]-k];
else if ((nums[i]<k) && (hash[k-nums[i]]<0))
count+=hash[k-nums[i]];
}
return count;
}

沒有留言:

張貼留言