第 72 场双周赛 https://leetcode-cn.com/contest/biweekly-contest-72/
2176. 统计数组中相等且可以被整除的数对 (简单)
int countPairs(int* nums, int numsSize, int k){
int cnt = 0;
for(int i = 0;i<numsSize-1;i++){
for(int j = i+1;j<numsSize;j++){
if(nums[i] == nums[j] && i*j%k ==0){
cnt++;
}
}
}
return cnt;
}
2177. 找到和为给定整数的三个连续整数 (中等)
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
long long* sumOfThree(long long num, int* returnSize){
long long* arr = (long long*)malloc(sizeof(long long)*3);
//三个连续整数之和 = num
// a = i,b=i+1,c=i+2 === 3*i+3 = num ===> i= (num - 3)/3
long m = (num -3)%3;
if(m ==0){
long i = (num -3)/3;
arr[0] = i;
arr[1] = i+1;
arr[2] = i+2;
*returnSize = 3;
return arr;
}
*returnSize = 0;
return arr;
}
2178. 拆分成最多数目的正偶数之和
void divide(long long num,long long* arr,int* returnSize){
long long last = (*returnSize) ==0?0:arr[*returnSize-1];
long long next = last + 2;
if((num - next) <= next){
arr[*returnSize] = num;
(*returnSize)++;
return;
}
arr[*returnSize] = next;
(*returnSize)++;
divide(num-next,arr,returnSize);
}
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
long long* maximumEvenSplit(long long finalSum, int* returnSize){
long long* arr = (long long*)malloc(sizeof(long long)*100000);
if(finalSum & 1){
*returnSize = 0;
return arr;
}
*returnSize = 0;
divide(finalSum,arr,returnSize);
return arr;
}