Lección 74 Bisemanalmente: Divida la matriz en pares de números iguales

Llega oferta, cava amigos a recoger! Estoy participando en el evento de registro de reclutamiento de primavera de 2022, haga clic para ver los detalles del evento .

1. Descripción del problema

Se le da una matriz de enteros  nums , que contiene  2 * n enteros.

Necesitas  nums dividir en  n pares, satisfaciendo:

  • Cada elemento  pertenece a un solo par.
  • Los elementos del mismo par son  iguales  .

Si se puede  nums dividir en  n pares, devuélvalo  true , de lo contrario, devuélvalo  false .

Enlace al tema: Dividir una matriz en pares de números iguales .

En segundo lugar, los requisitos de la materia.

Muestra

输入: nums = [3,2,3,2,2,2]
输出: true
解释:
nums 中总共有 6 个元素,所以它们应该被划分成 6 / 2 = 3 个数对。
nums 可以划分成 (2, 2) ,(3, 3) 和 (2, 2) ,满足所有要求。
复制代码

visita

1.简单模拟判断、位运算
2.建议用时10~35min
复制代码

3. Análisis de problemas

1. Simulación

Hay muchas maneras de hacer esta pregunta. Al principio, clasifiqué la matriz de menor a mayor, y luego se juzgó a los dos como un grupo.

No juzgue el final del bucle, siempre que las dos matrices de un grupo no sean iguales, simplemente devuelva falso.

2. Operación de bits

Si no comprende los puntos de conocimiento relevantes del funcionamiento de los bits, puede leer este artículo, que explica con más detalle:

Diariamente se practican preguntas de algoritmo --- Día 45: Operaciones con bits .

La operación de bits puede XOR dos números idénticos a 0, luego XOR la ​​matriz desde el principio hasta el final, si la salida es 0, entonces se cumple la condición.

Pero este método tiene un error, es decir, el resultado de XOR de números desiguales puede ser 0, por lo que el penúltimo ejemplo es difícil.

2.png

En cuarto lugar, la implementación de la codificación.

class Solution {
public:
    bool divideArray(vector<int>& nums) {
        int i,n=nums.size();
        sort(nums.begin(),nums.end());//排序
        for(i=0;i<n-1;i+=2)//两两一组
        {
            if(nums[i]!=nums[i+1])//不相等
                return false;//返回错误
        }
        return true;//返回正确    
    }
};
复制代码

5. Resultados de la prueba

3.png

1.png

Supongo que te gusta

Origin juejin.im/post/7079214860944277512
Recomendado
Clasificación