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.
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;//返回正确
}
};
复制代码