It tests using a long linear array with about 30000 more elements, and said time limit exceeded. Could anybody give me a hint?

```
typedef struct HashNode{
int key;
int val;
}HashNode;
typedef struct HashMap{
int size;
HashNode **storage;
}HashMap;
HashNode *hashnode_create(int *nums, int numsSize){
int i;
HashNode *hashnode = (HashNode *)malloc(sizeof(HashNode) * numsSize);
for(i=0; i<numsSize; i++){
hashnode[i].key = i+1;
hashnode[i].val = nums[i];
}
return hashnode;
}
int *twoSum(int *nums, int numsSize, int target){
int i, j;
int *res = malloc(sizeof(int) * 2);
HashNode *hashnode = hashnode_create(nums, numsSize);
for(i=0; i<numsSize; i++){
for(j=numsSize-1; j>=0; j--){
if(j == i){
continue;
}else{
if(target - nums[i] == nums[j]){
res[0] = hashnode[i].key;
res[1] = hashnode[j].key;
return res;
}
}
}
}
printf("No result found!\n");
return NULL;
}
```