[Lenguaje C] leetcode1 suma de dos números

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) icono-predeterminado.png?t=M276https://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?

Supongo que te gusta

Origin blog.csdn.net/weixin_60478154/article/details/123390172
Recomendado
Clasificación