Two Sum
来源:互联网 发布:还有什么算命的算法 编辑:程序博客网 时间:2024/05/24 01:51
Given an array of integers, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution.
Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
#include<stdio.h>#include<stdlib.h>int cmp(void *a,void *b){ return *(int *)a-*(int *)b;}int* twoSum(int numbers[], int n, int target){ int i,j; int tmp,tmp1,tmp2; int* res=(int*)malloc(sizeof(int)*2); int array[100000]; for(i=0;i<n;i++) { tmp=numbers[i]; array[tmp]=i; } /*for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(numbers[i]>numbers[j]){ tmp=numbers[i]; numbers[i]=numbers[j]; numbers[j]=tmp; } } }*/ qsort(numbers,n,sizeof(numbers[0]),cmp); for(i=0,j=n-1;i!=j;){ if(numbers[i]+numbers[j]==target) { tmp1=numbers[i]; tmp1=array[tmp1]+1; tmp2=numbers[j]; tmp2=array[tmp2]+1; res[0]=(tmp1>tmp2)?tmp2:tmp1; res[1]=(tmp1>tmp2)?tmp1:tmp2; return res; } else if(numbers[i]+numbers[j]>target){ j--; } else i++; }}void main(){ int arr[]={3,2,4}; int* a=(int*)malloc(sizeof(int)*2); int array[100000]; a=twoSum(arr,3,6); printf("index1=%d,index2=%d\n",a[0],a[1]);}
0 0
- Two Sum
- Two Sum
- Two Sum
- two sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- Two Sum
- 《Life》观后感
- SDUTOJ 2484 算术表达式的转换(栈)
- 【CSS+Html】解决左右浮动的两列内容,随浏览宽度变化而自适应?
- matlab中k-均值聚类详解
- android 5.0设计语言 直接拿来用!十大Material Design开源项目
- Two Sum
- 输出2到n之间的素数列
- 关于VS2012使用make_pair编译提示“error C2664: “std::make_pair”: 不能将参数 1 从“int”转换为“int &&””
- 矩阵连乘(备忘录方法:自顶向下递归)
- 使用WireShark破解网站密码
- 回调函数透彻理解Java
- 见微知著,以小“控”大的三极管(一)
- java.lang.NoSuchMethodError: com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationPro
- C语言枚举笔记