33,311
社区成员
发帖
与我相关
我的任务
分享
int* twoSum(int* nums, int numsSize, int target) {
int i;
int x1, x2, tmp;
memset( visit, 0, sizeof( visit ) );
int *ans = ( int *) malloc( sizeof( int ) * 2 );
if( ans == NULL ) {
return NULL;
}
ans[ 1 ] = 0;
ans[ 0 ] = 0;
for ( i = 0; i < numsSize; i++ ) {
visit[ nums[ i ] ]++;
}
for ( i = 0, x1 = -1, x2 = -1; i < numsSize; i++ ) {
if( visit[ target - nums[ i ] ] > 0 ){
if( ( nums[ i ] * 2 ) == target ) {
if( visit[ target - nums[ i ] ] < 2 ) {
continue;
}
}
x1 = i;
x2 = target - nums[ i ];
break;
}
}
if( x1 == -1 ) {
return NULL;
}
else {
for ( i = 0; i < numsSize; i++ ) {
if( x2 == nums[ i ] && x1 != i ) {
x2 = i;
break;
}
}
ans[ 0 ] = x1;
ans[ 1 ] = x2;
return ans;
}
}