链接:https://leetcode.cn/problems/maximum-number-of-pairs-in-array/solution/chun-c-by-xun-ge-v-b4mb/
来源:力扣(LeetCode)
题目
示例
思路
解题思路
先用快速排序对数组nums进行排序
定义一个数组ans[0]保存数组中数对的个数,ans[1]保存数组中剩余的个数
初始状态ans[0] = 0, ans[1] = size;
枚举数组
当nums[i] == nums[i-1],数对ans[0]+1,数组剩余元素ans[1]-2;
当nums[i] != nums[i-1],数对ans[0]不变,数组剩余元素ans[1]也不变
代码
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int cmp(const void * a, const void * b)
{
return *(int *)a - *(int *)b;
}
/*
int* numberOfPairs(int* nums, int numsSize, int* returnSize)
*int* numberOfPairs:寻找数组能组成多少个数对
int* nums:数组
int numsSize:数组长度
int* returnSize:返回值长度
返回值:数对个数和剩余元素
*/
int* numberOfPairs(int* nums, int numsSize, int* returnSize){
qsort(nums, numsSize, sizeof(nums[0]), cmp);
*returnSize = 2;
int * ans = malloc(sizeof(int) * 2);
ans[0] = 0;
ans[1] = numsSize;
for(int i = 1; i < numsSize; i++)
{
if(nums[i] == nums[i-1])
{
ans[0]++;
ans[1] -= 2;
i++;
}
}
return ans;
}