leecode学习(1)

89 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天。

一、题目

给定一个数组nums和一个目标值target,请你再该数组中找出和为目标值的那两个数,并返回数组的下标,你可以假设输入只会对应一个答案,但是数组的同一个元素不能使用两次。

二、解题思路

目的就是要求出两数之和等于目标值嘛。 就是把第一个数和后面 n-1 个数进行相加看那些等于目标值,第二个数个后面的 n-2 个数相加等于目标值.... 我们可以画一个图来表示:

图片.png

这样看起来就简单一些

三、代码

#include <stdio.h>
int main()
{
        int i;
        int nums[i];
        int target;

        printf("请输入数组的元素个数:\n");
        scanf("%d", &i);
        printf("请输入数组的元素值:\n");
        for (int j = 0; j <= i; j++) {
                scanf("%d", &nums[j]);
        }
        printf("你输入的数组为:{");
        for (int j = 0; j <= i; j++) {
                printf("%d,", nums[j]);
        }
        printf("\b}\n");

        printf("请输入目标值:\n");
        scanf("%d", &target);

        for(int k = 0; k <= i; k++ ) {
                for (int l = k+1; l <= i; l++) {
                        if(nums[k] + nums[l] == target) {
                                        printf("对应的数组元素为 nums[%d} nums=[%d]\n",k, l);
                                }
                }
        }
        return 0;
}
xhh@cluo:~/study/leecode$ ./a.out 1-leecode.c 
请输入数组的元素个数:
3
请输入数组的元素值:
1 2 3 4 
你输入的数组为:{1,2,3,4}
请输入目标值:
7
对应的数组元素为 nums[2} nums=[3]

这个答案不唯一,甚至不满足题目的需求,因为这里如果输入 5 就会有两个答案,所以这里还不能说完美,如果只能一次的话可以加一个 do while循环:

#include <stdio.h>
int main()
{
        int i;
        int nums[i];
        int target;

        printf("请输入数组的元素个数:\n");
        scanf("%d", &i);
        printf("请输入数组的元素值:\n");
        for (int j = 0; j <= i; j++) {
                scanf("%d", &nums[j]);
        }
        printf("你输入的数组为:{");
        for (int j = 0; j <= i; j++) {
                printf("%d,", nums[j]);
        }
        printf("\b}\n");

        printf("请输入目标值:\n");
        scanf("%d", &target);

        for(int k = 0; k <= i; k++ ) {
                for (int l = k+1; l <= i; l++) {
                        if(nums[k] + nums[l] == target) {
                                        do {
                                                printf("对应的数组元素为 nums[%d} nums=[%d]\n",k, l);
                                        }while(0);
                                        return 0;
                                }
                }
        }
        return 0;
}

xhh@cluo:~/study/leecode$ ./a.out 1-leecode.c 
请输入数组的元素个数:
3
请输入数组的元素值:
1 2 3 4
你输入的数组为:{1,2,3,4}
请输入目标值:
5
对应的数组元素为 nums[0} nums=[3]

这样就成功返回一个值