leetcode 228. Summary Ranges

Given a sorted integer array without duplicates, return the summary of its ranges.

For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].

题意:把连续的数连续表示

思路:模拟。注意有负数,注意有-2147483648这种数据。

本来还想着,可能是leetcode加数据的审核机制太松,导致被人加了奇怪的数据。。。

结果发现出题人和加数据的人是一个人啊?

不给数据范围,加这种奇怪的数据很有意思? 分分钟卡掉你的标程啊?

感觉像吃了苍蝇一样恶心。。一句话,出题人傻逼

1/* ***********************************************
2Author :111qqz
3Created Time :2017年04月14日 星期五 16时26分01秒
4File Name :228.cpp
5************************************************ */
6class Solution {
public:
 1    string int2st(long long x)
 2    {
 3	if (x==0) return "0";
 4	string ret = "";
 5	int val;   //md还有负数
 6	long long sign = 1;
 7	if (x<0) sign = -1;
 8	x*=sign;
 9	while (x)
10	{
11	    val = x % 10;
12	    ret = ret + char(val+'0');
13	    x/=10;
14	}
15	if (sign==-1) ret +="-";
16	reverse(ret.begin(),ret.end());
17	return ret;
18    }
19    string solve(vector<int>& vec)
20    {
21	string ret = "";
22	int siz = vec.size();
23	if (siz==1) ret = ret + int2st(vec[0]);
24	else ret = ret + int2st(vec[0]) + "->" + int2st(vec[siz-1]);
25	return ret;
26    }
27    vector<string> summaryRanges(vector<int>& nums) {
28	int siz = nums.size();
29	vector<string>res;
30	if (siz==0) return res;
31	vector<int>tmp;
32	for ( int i = 0 ; i < siz ; i++)
33	{
34	    if (tmp.size()==0)
35	    {
36		tmp.push_back(nums[i]);
37	    }else if (nums[i]==nums[i-1]+1)
38	    {
39		tmp.push_back(nums[i]);
40	    }else 
41	    {
42		res.push_back(solve(tmp));
43		tmp.clear();
44		tmp.push_back(nums[i]);
45	    }
46	}
47	res.push_back(solve(tmp));
        return res;

    }

};