# C code temp ``` #include<stdio.h> #include <stdlib.h> // int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){ // int i,j,target; // for (i = 0; i < numsSize; i++) // { // target = num[i]; // int new_nums[numsSize-1-i]; // for (j = i; j < numsSize; j++) // { // new_nums[j-i] = nums[i]; // } // } // } int* twoSum(int* nums, int numsSize, int target, int *returnSize){ int max=nums[0],min=nums[0],i; for(i=1;i<numsSize;i++){ max=max>nums[i]?max:nums[i]; min=min<nums[i]?min:nums[i]; } int sft = abs(max) > abs(min) ? abs(max):abs(min); int arrsize = 3 * sft - min + 1; int *HT = calloc(arrsize--,sizeof(int)); HT[nums[0]+sft]=-1; for(i=1;i<numsSize;i++){ HT[nums[i]+sft]=i; } //*returnSize = (int*) 2; int *ret = malloc(2*sizeof(int)),index2; for(i=0;i<numsSize;i++){ index2=target-nums[i]+sft; if(index2<0||index2>arrsize)continue; if(HT[index2] && HT[index2]!=i){ ret[0]=nums[i]; ret[1]=nums[HT[index2]]; if(HT[index2]<0) ret[1]=0; // if(ret[0]==ret[1]){ // continue; // } free(HT); return ret; } } //free(HT); return (int*)0; } int main(int argc, char *argv[]) { int nums[] = {0,4,12,5,-16}; int numsSize = sizeof(nums)/sizeof(nums[0]); int target = 0; int returnSize = 2; int *ret = twoSum(nums,numsSize,target,&returnSize); if (ret != 0x0) printf("[%d,%d]",ret[0],ret[1]); else printf("Not found"); } ```