228. Summary Ranges
2016-03-09 20:17
302 查看
边界条件边界条件边界条件边界条件
class Solution { public: string int_to_str(int n) { if(n==-2147483648) return "-2147483648"; string s; if(n<0) { n=-n; s.push_back('-'); } if(n<10) s.push_back('0'+n); else{ int len=log(n+0.01)/log(10); for(int j=pow(10,len);j>=1;j/=10) { int j0=n/j%10; s.push_back('0'+j0); } } return s; } string int_to_str(int n,int m) { string s; if(n==-2147483648) { s+="-2147483648"; } else { if(n<0) { n=-n; s.push_back('-'); } if(n<10) s.push_back('0'+n); else{ int len=log(n+0.01)/log(10); for(int j=pow(10,len);j>=1;j/=10) { int j0=n/j%10; s.push_back('0'+j0); } } } s.push_back('-'); s.push_back('>'); n=m; if(n<0) { n=-n; s.push_back('-'); } if(n<10) s.push_back('0'+n); else{ int len=log(n+0.01)/log(10); for(int j=pow(10,len);j>=1;j/=10) { int j0=n/j%10; s.push_back('0'+j0); } } return s; } vector<string> summaryRanges(vector<int>& nums) { vector<string> vs; if(!nums.size()) return vs; int l0=nums[0]; for(int i=1;i<nums.size();i++) { if((float)nums[i]-nums[i-1]>1) { if(l0==nums[i-1]) { string s=int_to_str(l0); vs.push_back(s); } else { string s=int_to_str(l0,nums[i-1]); vs.push_back(s); } l0=nums[i]; } } string s; if(l0==nums[nums.size()-1]) { string s=int_to_str(l0); vs.push_back(s); } else { string s=int_to_str(l0,nums[nums.size()-1]); vs.push_back(s); } return vs; } };
相关文章推荐
- poj 2142 The Balance(扩展欧几里德算法)
- 56-题目1087:约数的个数
- 【dotnet跨平台】"dotnet restore"和"dotnet run"都做了些什么?
- 命令行解决mysql中文乱码
- 竖式问题
- Okhttp的简单介绍和使用(一)
- 华为oj 求二叉树的深度和宽度
- could improve 125. Valid Palindrome
- Andrroid 面试问题问答
- ALGO-124 数字三角形 动态规划
- Linux上安装Oracle11g
- C语言-switch语句
- PID 入门形象理解
- iOS开发笔记(6)---- 应用内接入银联ApplePay
- 278. First Bad Version
- actor发送消息简单例子
- Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
- 全局负载均衡技术如何将用户的访问指向离用户最近的工作正常的流媒体服务器上
- UML的9种图例解析
- Link-Cut-Tree模板