[Leetcode 228, Easy] Summary Ranges

来源:互联网 发布:c语言打开exe文件 编辑:程序博客网 时间:2024/05/16 05:34

Problem:

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"].

Analysis:

Group elements of an array by contiguous increasing.

Solutions:

C++:

    void AddEndPoint(string& s_range, int num)    {        if(num == 0) {            s_range.push_back('0');            return;        }        if(num < 0)            s_range.push_back('-');                unsigned int u_num = abs(num);        string s_point;        while(u_num > 0) {            int c_digit = u_num % 10;            u_num /= 10;            s_point.insert(s_point.begin(), c_digit + '0');        }        s_range.append(s_point);    }    vector<string> summaryRanges(vector<int>& nums) {        vector<string> collection_ranges;        if(nums.empty())            return collection_ranges;        for(int i = 0; i < nums.size();) {            int start_num = nums[i];            int end_num = nums[i];            int j = i + 1;            for(; j < nums.size(); ++j) {                if(nums[j] - nums[i] != j - i)                    break;                end_num = nums[j];            }            string s_range;            AddEndPoint(s_range, start_num);            if(start_num != end_num) {                s_range.append("->");                AddEndPoint(s_range, end_num);            }            collection_ranges.push_back(s_range);            i = j;        }                return collection_ranges;    }
Java:


Python:

0 0
原创粉丝点击