Descripción del problema
Dadas dos matrices ordenadas de enteros A y B, combine la matriz B en la matriz A para convertirla en una matriz ordenada.
Nota: Se puede suponer que la matriz A tiene suficiente espacio para almacenar los elementos de la matriz B, A y B La inicial número de elementos son A y B, respectivamente.
Descripción de
entrada : entrada de dos matrices, dos longitudes
Descripción de salida:
matriz ordenada
Ejemplo
Ejemplo 1
Ingrese
[1,2,3], 3, [4,5,6], 3
Salida
[1,2,3,4,5,6]
Soluciones
análisis
Esta pregunta utiliza el método de clasificación de colocar elementos del lado derecho de la matriz A para evitar el problema de múltiples bucles.
método
- Al hacer un bucle en la matriz A / B, los elementos se colocan desde el lado derecho de la matriz A.
Código
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int index = A.length - 1;
int curA = m - 1;
int curB = n - 1;
// A/B元素同时包含
while (curA >= 0 && curB >= 0) {
if (A[curA] > B[curB]) {
A[index--] = A[curA--];
} else {
A[index--] = B[curB--];
}
}
// 只包含A数组元素
while (curA >= 0) {
A[index--] = A[curA--];
}
// 只包含B数组元素
while (curB >= 0) {
A[index--] = B[curB--];
}
}
}
Si quieres hacer la prueba, puedes ir directamente al enlace de Niuke.com para hacer la prueba