2341. ¿Cuántos pares puede formar una matriz?
Se le proporciona una matriz de números enteros con índices que comienzan desde 0. En un solo paso, puede realizar los siguientes pasos:
从 nums 选出 两个 相等的 整数
从 nums 中移除这两个整数,形成一个 数对
Realice esta operación en números varias veces hasta que no pueda continuar.
Devuelve una respuesta de matriz de enteros que comienza en 0 y de longitud 2 como respuesta, donde respuesta[0] es el número de pares formados y respuesta[1] es el número de enteros que quedan después de realizar tantas operaciones anteriores con números como sea posible. .
Ejemplo 1:
Entrada: nums = [1,3,2,1,3,2,2]
Salida: [3,1]
Explicación:
nums[0] y nums[3] forman un par de números y se eliminan de nums, nums = [ 3,2,3,2,2] .
nums[0] y nums[2] forman un par de números y se eliminan de nums, nums = [2,2,2].
nums[0] y nums[1] forman un par de números y se eliminan de nums, nums = [2].
No se pueden formar más parejas. Se forman un total de 3 pares de números, quedando 1 número en nums.
Ejemplo 2:
Entrada: nums = [1,1]
Salida: [1,0]
Explicación: nums[0] y nums[1] forman un par de números y se eliminan de nums, nums = [].
No se pueden formar más parejas. Se forma un total de 1 par de números, quedando 0 números en nums.
Ejemplo 3:
Entrada: nums = [0]
Salida: [0,1]
Explicación: No se puede formar un par de números, queda 1 número en nums.
Esta pregunta es relativamente simple, el código de solución es el siguiente:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* numberOfPairs(int* nums, int numsSize, int* returnSize){
int count[101];
int * re=(int *)malloc(sizeof(int)*2);
*returnSize=2;
for(int i=0;i<101;i++){
count[i]=0;
}
re[0]=0;
re[1]=0;
for(int i=0;i<numsSize;i++){
count[nums[i]]++;
if(count[nums[i]]==2){
re[0]++;
re[1]--;
count[nums[i]]=0;
}
if(count[nums[i]]==1){
re[1]++;
}
}
return re;
}