/**
* Note: The returned array must be malloced, assume caller calls free().
*/
char ** summaryRanges(int* nums, int numsSize, int* returnSize){
int i;
*returnSize = 0;
char **result = (char **)malloc(sizeof(char *) * numsSize);
for(i = 0; i<numsSize; ++i)
{
int low = nums[i];
i++;
while(i<numsSize && nums[i] == nums[i-1] + 1) i++;
i--;
int high = nums[i];
char *tmp = (char *)malloc(sizeof(char) * 25);
sprintf(tmp, "%d", low);
if(low<high)
{
sprintf(tmp + strlen(tmp), "->");
sprintf(tmp + strlen(tmp), "%d", high);
}
result[(*returnSize)++] = tmp;
}
return result;
}