给定一个整数数组 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]
//思路:定义数组,输入,调用函数,输出。需要用到的函数:求和函数、输出下标函数
#include<iostream>
using namespace std;
int qiuhe(int a[],int n);//return值为两个整数
int shuchu(int a[],int n);//return值为下标
int main(){
int nums[N];
int target;
for(int i=0;i<N;i++){
cin>>nums[i];
}
cin>>target;
qiuhe(nums[N],target);//调用求和函数得到x和y
shuchu(nums[N],x);
shuchu(nums[N],y);
cout<<"["<<x<<","<<y<<"]"<<endl;
return 0;
}
int qiuhe(int a[],int n){
//设置指针遍历,先指向首地址,只要p的指向不为空就后移,遍历一个就用它和n相减,检查得到的结果是不是在数组里面,若是,用x和y返回这两个值
int*p=a;
while(p!=NULL){
int m=n-*p//m用来保存相减得到的结果
if(jiancha(a[],m)=1){
int x=m,int y=target-m;
}
//调用检查成员函数,看相减的结果是不是数组的成员,是返回1,不是返回0,是的话赋值给两个变量,输出这两个变量
p++;
}
return x,y;
}
int jiancha(int a[],int n){
//设置指针遍历,每遍历一个看是否相等,相等的话返回1
int*q=a;
int flag=0;
while(q!=NULL){
if(*q==n){
flag=1;
}
q++;
return flag;
}
}
int shuchu(int a[],int n){
//已知数组元素的值,求数组元素的下标,设置count,从头遍历,遍历一次就比较一次,相等时输出count
int count=0;
int *p=a;
while(p!=NULL){
if(n!=*p){
count++;
}
}
return count;
}
/*比如说我在主函数里面调用了一个返回值为int类型的函数,即
int f(int[],int n);
然后这个函数返回的结果是return count,是int类型的
那么我在主函数里面能不能直接写cout<<conut呢
如果我调用了两遍这个f函数
又该如何写呢*/