江湖上傳說memcpy 很慢
嗯......為什麼呢 XD!?
另一種寫法不需要sorting,但是用C的角度來看~覺得沒有比較快(?)
C沒有 find 這種東西啊!!!(怒吼)
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int comp(const void *a, const void *b)
{
return ( *(int *)a - *(int *)b);
}
bool* checkArithmeticSubarrays(int* nums, int numsSize, int* l, int lSize, int* r, int rSize, int* returnSize) {
*returnSize = lSize;
bool *ret = calloc (lSize, sizeof(bool));
for (int i=0; i<lSize; i++)
{
int len = r[i]-l[i]+1;
int *arr = calloc (len, sizeof(int));
int idx = l[i];
#if 0
memcpy(arr, nums+idx, sizeof(int)*len);
#else
for (int k=0; k<len; k++)
arr[k]= nums[idx+k];
#endif
qsort((void *)arr,len,sizeof(int),comp);
ret[i]= true;
int diff = arr[1]-arr[0];
for (int j=1; j<len-1; j++)
{
if (arr[j+1]-arr[j] != diff)
{
ret[i]= false;
break;
}
}
}
return ret;
}
沒有留言:
張貼留言