【c语言】leetcode1两数之和

打开leetcode题库第一道题:两数之和,难度为简单,抱着试一试的心态去看看这道题。想着毕竟是第一道题嘛,对我们应该是比较友好的,所以写了这篇博客记录一下

1. 两数之和 - 力扣(LeetCode) (leetcode-cn.com)icon-default.png?t=M276https://leetcode-cn.com/problems/two-sum/如图所示

 以及基于c语言的开头函数模板

 我们先来看看此题的几个要点

1.给定一个整数数组 nums 和一个整数目标值 target

2.在该数组中找出 和为目标值 target  的那 两个 整数

3.返回它们的数组下标

4.数组中同一个元素在答案里不能重复出现

好的,我们就此对题目有了一定的基本认知,大致理解了题意,除此之外,我们很有必要在做题之前看一看测试用例

扫描二维码关注公众号,回复: 13916878 查看本文章

 

 实际上,在示例中还包含了一个条件,什么条件呢?我们发现,相加的两个数是相邻的。

这点做的时候其实并没有想到,后来自己想了很久加上去看别人 评论.

分析一下函数的参数

int* nums,就是nums数组

 int numsSize, 元素的个数

int target,目标值大小

int* returnSize返回个数

我们的大致思路如下:

动态开辟一个数组来存放那两个数(数组中和为目标值 target  的那 两个 整数)

用循环遍历找出那两个相邻整数

判断是否相等

思路大体就是如此,该怎么去实现呢?

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;
}

这里给出源码,最后当然是通过啦

 ok。你学废了吗?

猜你喜欢

转载自blog.csdn.net/weixin_60478154/article/details/123390172