char ** summaryRanges(int* nums, int numsSize, int* returnSize){ char** res=malloc(numsSize*sizeof(char*)); *returnSize=0; int p=0,q=0; while(q<numsSize){ while(q+1<numsSize && nums[q]+1==nums[q+1]) ++q; res[*returnSize]=malloc(100*sizeof(char));//数字个数是q-p+1个,但是转换成字符串可能占很多位,比如一个数字1000000就占7个字符位 if(q==p){ sprintf(res[*returnSize],"%d",nums[q]);//sprintf发送格式化输出到字符串 } else{ sprintf(res[*returnSize],"%d->%d",nums[p],nums[q]); } ++(*returnSize); ++q; p=q; } return res; }