Abre la primera pregunta del banco de preguntas de leetcode: la suma de dos números, la dificultad es simple, y mira esta pregunta con la mentalidad de intentarlo. Pensando que después de todo es la primera pregunta, debería ser más amigable con nosotros, así que escribí este blog para registrarlo.
1. La suma de dos números - LeetCode (leetcode-cn.com) https://leetcode-cn.com/problems/two-sum/ como se muestra
Y la plantilla de función inicial basada en lenguaje c
Echemos un vistazo a algunos puntos clave de este tema.
1. Dada una matriz de enteros nums
y un valor objetivo de enteros target
2. Encuentra los dos enteros cuya suma es el valor objetivo en la matriztarget
3. Devolver sus subíndices de matriz
4. El mismo elemento en la matriz no se puede repetir en la respuesta
Ok, tenemos una cierta comprensión básica de la pregunta y una comprensión general del significado de la pregunta. Además, es necesario que echemos un vistazo al caso de prueba antes de hacer la pregunta.
De hecho, también hay una condición incluida en el ejemplo, ¿cuál condición? Encontramos que los dos números sumados son adyacentes.
De hecho, no pensé en eso cuando lo hice, y luego lo pensé durante mucho tiempo y luego fui a ver los comentarios de otras personas.
Analizar los parámetros de la función.
int* nums, es la matriz de nums
int numsSize, el número de elementos
objetivo int, tamaño del valor objetivo
int* returnSize devuelve el número
Nuestra idea general es la siguiente:
Abra dinámicamente una matriz para almacenar los dos números ( los dos enteros en la matriz y el valor objetivo )target
Encuentre esos dos enteros adyacentes usando loop traversal
determinar si es igual
La idea es generalmente así, ¿cómo implementarla?
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int*array = (int*)malloc(2*sizeof(int));
for(int i = 0;i<numsSize;i++){
for(int j =i+1;j<numsSize;j++){
if(nums[i]+nums[j]==target){
array[0] = i;
array[1] = j;
*returnSize = 2;
return array;
}
}
}
*returnSize=0;
return*array = NULL;
}
El código fuente se proporciona aquí y, por supuesto, se pasa al final.
está bien. ¿Has perdido tus estudios?