Preguntas de cepillado de Liqueu --- la primera pregunta --- la suma de dos números

Requisitos del sujeto

Inserte la descripción de la imagen aquí

Resolución de problemas

Método uno (solución convencional)

Recorra la matriz.
Cuando sea el primer número, busque desde la parte posterior si hay un número
que se le haya agregado. Si lo hay, devuelva el
código JS subíndice

var twoSum = function(nums, target) {
    
    
	let data = [];
	let k = 0;
	for(let i = 0;i<nums.length;i++){
    
    
		for (let j = i + 1;j<nums.length;j++){
    
    
			if(nums[i]+nums[j]==target){
    
    
				data[k] = i;
				data[k+1] = j;
				k++;
				i=j;
			}
		}
	}
return data;
};

o

var twoSum = function(nums, target) {
    
    
	let c = [];
	for (let index of nums.keys()){
    
    
	if(c.indexOf(nums[index])>=0){
    
    
		return [c.indexOf(nums[index]),index]
	}
	else{
    
    
		c.push(target-nums[index]);
		}	
	}
}

Método dos (velocidad rápida)

Inserte la descripción de la imagen aquí
Idea:
dado que estamos buscando un par de números, y la suma Y de este par de números es definida, entonces sabemos qué X se necesita (YX)

Entonces, lo que estamos buscando es (YX) pero atravesar la matriz original es más lento y requiere comparación. Si creamos una nueva tabla de comparación, por ejemplo,
tenemos una matriz
arr = [1,3,4,2] para encontrar los dos números que son iguales a 6 y el objetivo subíndices
podemos crear una matriz vacía arrN = [] para almacenar el valor de destino (una matriz de arr atravesada por el valor actual, como 1 puede ser 3/4/2)
atravesando cada vez que la matriz arrN de inicio Vea si el número de arr actual existe en arrN.
¿Por qué? Cuando arr atraviesa por primera vez, arrN está vacío. Dejamos que arrN almacene 5 (6-1) y
arrN = [5] En este punto, encontramos que 5 está en arrN El subíndice es 0 y el subíndice de 1 en arr también es 0

Continúe atravesando arr. En este momento,
usamos arrN.indesOf (3) para devolver el índice de la primera aparición de 3 en arrN. Si no, devuelva -1. Obviamente, no hay 3 en arrN = [5]. Luego arrN almacena 3 (6-3). En este momento, arrN = [5,3]
continúa atravesando arr. En este momento, el recorrido alcanza el valor de 4.
Usamos arrN.indesOf (4) para devolver el subíndice de la primera aparición de 4 en arrN, si Si no, devuelve -1. Obviamente, no hay 4 en arrN = [5,3], y luego arrN almacena 2 (6-4). En este momento, arrN = [5,3,2]
continúa atravesando arr y el valor es 2
Usamos arrN.indesOf (2) para devolver el subíndice de la primera aparición de 4 en arrN. Si no, devuelve -1. Obviamente arrN = [5,3,2] contiene 2, arrN.indesOf (2) devuelve 2 es el subíndice de 2 en arrN. En este momento, también sabemos que arr atraviesa el elemento de la matriz con el subíndice 3.
Luego devolvemos [2,3] que es el resultado deseado del título

Lo que debe entenderse es que cuando almacenamos números en arrN, por ejemplo, procesamos el primer número 1 de arr, y el subíndice de 1 es 0, entonces nuestro arrN comienza a almacenar el primer número 5 (6-1), 5 El subíndice en arrN también es 0, y 5 es el número requerido para hacer coincidir el número con el subíndice 0, por lo que averiguaremos si el número en arr existe en arrN más adelante.
Cuando atravesamos a 4, almacenamos 2 y cuando atravesamos a 2, encontramos que 2 existe en arrN, y el subíndice es 2, y el subíndice de 2 en arr es 3,
por lo que devuelve [2,3]

el código se muestra a continuación

var twoSum = function(nums, target) {
    
    
	let c = [];
	for (let index of nums.keys()){
    
    
		if(c.indexOf(nums[index])>=0){
    
    
			return [c.indexOf(nums[index]),index]
		}
		else{
    
    
			c.push(target-nums[index]);
		}	
	}
};

o

var twoSum = function(nums, target) {
    
    
	let c = [];
	for (let index of nums.keys()){
    
    
		let a = c.indexOf(nums[index]);
		if(a>=0){
    
    
			return [a,index]
		}
		else{
    
    
			c.push(target-nums[index]);
		}	
	}
};





El seguimiento lanzará

cada plataforma en detalle el proceso de construcción de

front-end: js Getting Started vue vue desarrollar applets
backend: java Getting Started springboot como
server: mysql server entry instrucciones sencillas servidor en la nube para ejecutar el proyecto
python: recomendado no calentar el fuego divino debe ver Oh
, el uso de algunos complementos, etc.

El camino de la universidad también está en uno mismo, estudiar mucho, juventud
con pasión. Si te interesa la programación, puedes unirte a nuestro grupo qq para comunicarnos juntos: 974178910
Inserte la descripción de la imagen aquí

Si tiene alguna pregunta, puede dejar un mensaje a continuación, le responderé si lo ve

Supongo que te gusta

Origin blog.csdn.net/qq_42027681/article/details/111313620
Recomendado
Clasificación