Sword se refiere a la oferta: 57. Dos números con S: análisis y código (Java)

Sword se refiere a la oferta 57. Y dos números para el análisis S y el código [Java]

1. Título

Ingrese una matriz ascendente y un número S, y encuentre dos números en la matriz de modo que su suma sea exactamente S. Si la suma de varios pares de números es igual a S, genere el producto más pequeño de los dos números.
Descripción de salida:
Corresponde a cada caso de prueba, salida dos números, el número más pequeño se emite primero.

Dos, análisis y código

1. Doble puntero

(1) Pensando

Diseñe dos punteros en ambos extremos de la matriz. Si la suma de los números correspondientes es menor que S, mueva el puntero de la cabeza hacia atrás, de lo contrario, mueva el puntero de cola hacia adelante hasta que se encuentren dos números o punteros que sumen S.
La suma es dos números de S. Cuanto mayor es la distancia, menor es el producto. Por lo tanto, el primer par de números encontrado por el método anterior es la solución.

(2) Código

import java.util.ArrayList;
public class Solution {
    
    
    public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
    
    
        ArrayList<Integer> ans = new ArrayList<>();
        if (array == null || array.length < 2)
            return ans;
        
        int l = 0, r = array.length - 1;
        while (l < r && (array[l] + array[r] != sum)) {
    
    
            if (array[l] + array[r] < sum)
                l++;
            else
                r--;
        }
        
        if (l != r) {
    
    
            ans.add(array[l]);
            ans.add(array[r]);
        }
        return ans;
    }
}

(3) Resultados

Tiempo de ejecución: 16ms, memoria ocupada: 9308k.

Tres, otro

Nada.

Supongo que te gusta

Origin blog.csdn.net/zml66666/article/details/111875247
Recomendado
Clasificación