[LeetCode] Summary Ranges
2015-09-29 13:18
197 查看
题目:给定一个无重复且升序的整数数组,返回摘要部分
分析:动态分配二维字符数组的空间,以及字符串的拼接
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;
}
分析:动态分配二维字符数组的空间,以及字符串的拼接
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;
}
相关文章推荐
- 多文件上传
- JAVA关于常量
- java的多态——null参数会调用哪个方法?
- 大数据学习笔记1
- 安装php的php-protobu扩展及使用 (二)
- 《pointers on c》的第1个例子
- java使用正则表达式方法和正则表达式大全
- 1 --SQLite 怎么关联起来
- nodejs 版本更新问题(v0.8.14 -> v4.1.1)
- Qt 5笔记
- ios获取设备信息总结
- JAVA修改、删除数据之后刷新JTable的方法
- JAVA中int、String的类型转换
- apache 虚拟主机
- Older Hobby
- Mybatis常用sql语句xml配置
- 文件上传
- jquery笔记(操作HTML)
- Windows Python 2.7 安装 Numpy
- error C2381: “exit” : 重定义;__declspec(noreturn) 不同