void reverseString(char* s, int sSize) {
int i = 0,j = sSize - 1;
while(i < j) {
char tmp = s[i];
s[i] = s[j];
s[j] = tmp;
i ++, j --;
}
}
bool isSubsequence(char* s, char* t) {
int i = 0, j = 0;
while( s[i] && t[j] ) {
if( s[i] == t[j] ) {
i++;
}
j++;
}
return s[i] == '\0';
}
int cmp(const void * p1, const void * p2) {
return (*(int *) p1) - (*(int *) p2);
}
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
int save[10010];
memcpy(save, nums, sizeof(int) * numsSize);
qsort(nums, numsSize, sizeof(int), cmp);
int i = 0, j = numsSize - 1;
while(i < j) {
int sum = nums[i] + nums[j];
if(sum > target) {
j--;
}else if(sum < target) {
i++;
}else {
break;
}
}
int * ret = (int *)malloc(sizeof(int) * 2);
if(i > j) {
*returnSize = 0;
return ret;
}
for(int a = 0; a < numsSize; ++a) {
if(save[a] == nums[i]) {
i = a;
break;
}
}
for(int b = 0; b < numsSize; ++b) {
if(save[b] == nums[j] && b != i) {
j = b;
break;
}
}
if(j > i) {
int t = i;
i = j;
j = t;
}
*returnSize = 2;
ret[0] = i;
ret[1] = j;
return ret;
}