打开leetcode题库第一道题:两数之和,难度为简单,抱着试一试的心态去看看这道题。想着毕竟是第一道题嘛,对我们应该是比较友好的,所以写了这篇博客记录一下
1. 两数之和 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/two-sum/如图所示
以及基于c语言的开头函数模板
我们先来看看此题的几个要点
1.给定一个整数数组 nums
和一个整数目标值 target
2.在该数组中找出 和为目标值 target
的那 两个 整数
3.返回它们的数组下标
4.数组中同一个元素在答案里不能重复出现
好的,我们就此对题目有了一定的基本认知,大致理解了题意,除此之外,我们很有必要在做题之前看一看测试用例
实际上,在示例中还包含了一个条件,什么条件呢?我们发现,相加的两个数是相邻的。
这点做的时候其实并没有想到,后来自己想了很久加上去看别人 评论.
分析一下函数的参数
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。你学废了吗?