0
点赞
收藏
分享

微信扫一扫

习题-两数之和

素的盐 2022-03-12 阅读 65
c++算法

给定一个整数数组 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函数
又该如何写呢*/
举报

相关推荐

0 条评论