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

 

/*
两数之和。
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]


*/
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include <iostream>
int* twoSum(int* nums, int numsSize, int target,int* returnSize){
    if(nums==NULL){
        return NULL;
    }
    int i=0,j=numsSize-1,sum=0;
    returnSize =(int*)malloc(sizeof(int)*2);
    while(i<j){
        sum = nums[i]+nums[j];
        if(sum==target){
            returnSize[0]=i;
            returnSize[1]=j;
            return returnSize;
        }else if(sum>target){
            j--;
        }else{
            i++;
        }
    }
    return returnSize;
}
int main()
{
    int i;
    int nums[4]={2,7,11,15};
    int *rs,*returnSize;
    rs = twoSum(nums,4,9,returnSize);

    for(i=0;i<2;i++){
        printf("%d ",rs[i]);
    }

    return 0;
}

 

/*
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
*/
#include <stdio.h>
int main()
{
    int i,n,t,j;
    scanf("%d",&n);
    int nums[n];
    for(i=0;i<n;i++){
        scanf("%d",&nums[i]);
    }
    scanf("%d",&t);
    for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){
            if(nums[i]+nums[j]==t){
                printf("%d,%d",i,j);
            }
        }
    }
    return 0;
}

 

posted @ 2019-11-20 15:21  dreamy_java  阅读(618)  评论(0编辑  收藏  举报