每日一题——力扣——求两数之和

题目来源于力扣——两数之和 C / C++ - 两数之和 - 力扣(LeetCode) (leetcode-cn.com)

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]
 

由于作者水平有限,这里就给大家先讲解一下最简单的解法:暴力遍历数组法

这里就拿上面的示例1来讲解

这题我们采用调用函数的方式。要遍历数组,所以我们就要求出数组的元素个数,这里我们可以用sizeof操作符。

计算出数组元素的个数,我们就把数组元素个数,数组,还有目标值target传递过去

接下来就是遍历数组的事了,我们不需要每个数组的每个元素与每个元素都相加一次,不然就可能会出现多个结果

比如示例1的求目标值是9,如果把数组中每个元素与每个元素之间都试着相加一次

就会出现下标是0和1和下标是1和0的结果

那我们怎么设置这个循环呢

我们可以这样想,假设x是外层循环for的变量,y是内层循环for的变量,当x指向第一个元素时,

那内层循环的y就不需要再指向第一个元素了,这样就把第一个元素和后面的元素都试加了一遍,

当外层循环指向第二个元素时,内层循环就不需要遍历到第一个元素,遍历第二个元素后面的元素就可以了,一直这样循环下去既可,直到倒数第二个元素和最后一个元素试加一遍位置。

                                                        示例1

  arr[4]={2,7,11,15}

  arr[0]   与arr[1],arr[2],arr[3]试加

  arr[1]   与arr[2],arr[3]试加

  arr[2]   与arr[3]试加

 所以代码可以这样子写

#include
void sum(int arr[4],int sz,int target)
{
	//遍历数组
	int i = 0;
	int j = 0;
	for (i = 0; i < sz-1; i++)     //从第一个元素开始,至倒数第二个元素
	{
		for (j = i+1; j 

不知道讲得清不清楚,如果有不好的地方,还请大家指正

你可能感兴趣的:(力扣刷题,leetcode,c语言)