Preguntas de cepillado de Niuke.com: combine dos matrices ordenadas

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

  1. 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

Combine dos matrices ordenadas-Niuke.com

Supongo que te gusta

Origin blog.csdn.net/qq_35398517/article/details/112580643
Recomendado
Clasificación