vlambda博客
学习文章列表

【学渣带你刷Leetcode】0001.两数之和

#include <stdio.h>#include <stdlib.h> #include <time.h> //利用时间产生系统随机数 int *twoSum(int* nums, int numsSize, int target, int* returnSize){ int *a = (int *)malloc(sizeof(int) * (*returnSize));//定义一个数组 int i, j; for (i = 0; i < numsSize - 1; i++) { for (j = i + 1; j < numsSize; j++) { if (nums[i] + nums[j] == target) { a[0] = i; a[1] = j; printf("%d+%d满足条件\n",nums[i],nums[j]); *returnSize = 2; return a; } } } *returnSize = 0; return a;} int main(){ int target; int numsSize; int returnSize=2;  printf("请输入数组数量及目标值,例(4 9):"); scanf("%d %d",&numsSize,&target); printf("使用随机函数生成%d个元素的数组吗,Y/N?\n",numsSize); getchar(); char c; c=getchar();   int i; int nums[numsSize]; if(c=='n'|| c=='N') { printf("请输入数组,例(2 7 56 4):"); //输入数组准备  for(i=0; i<numsSize; i++) { scanf("%d",&nums[i]); } } else if(c=='y'|| c=='Y') { for(i=0; i<numsSize; i++) { nums[i]=rand()%100; } }   //调用方法 int *p=twoSum(nums,numsSize,target,&returnSize);  //输出 if(returnSize==2) { printf("索引号为:\n"); for(i=0; i<returnSize; i++) { printf("%d ",*(p+i)); } } else { printf("没有满足的\n"); for(i=0; i<numsSize; i++) { printf("%d ",nums[i]); } }   return 0; }  

要不是为了原创,我真不想粘贴题目描述

1.两数之和

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]