题目:给定一个无重复且升序的整数数组,返回摘要部分
分析:动态分配二维字符数组的空间,以及字符串的拼接
C语言参考代码:
char** summaryRanges(int* nums, int numsSize, int* returnSize) {
int sum=*nums,j=0,i=0;
char** s=(char**)malloc(sizeof(char*)*numsSize);
char temp[50];
s[0]=(char*)malloc(100*sizeof(char));
if(numsSize==0)
{
return s;
}
sprintf(s[0],"%d",*nums);
for(int i=1;i<numsSize;i++)
{
nums++;
if(sum+1==*nums)
{
while(i<numsSize&&sum+1==*nums)
{
nums++;
i++;
sum++;
}
i=i-1;
strcat(s[j],"->");
sprintf(temp,"%d",*(--nums));
strcat(s[j],temp);
sum=*nums;
}
else
{
j++;
s[j]=(char*)malloc(100*sizeof(char));
sprintf(temp,"%d",*nums);
strcat(s[j],temp);
sum=*nums;
}
}
*returnSize=j+1;
return s;
}