zoukankan      html  css  js  c++  java
  • [LeetCode]9. 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"].

    解法:(1)初始化两个游标ind1=0,ind2=1,一个左边界left=ind1;(2)若nums[ind2]-nums[ind1]==1则ind1++、ind2++,否则可以得到一个范围[nums[left], nums[ind2-1]],将其存入结果中,同时更新游标ind1=ind2,且ind2++,更新左边界left=ind1;(3)若ind2<nums.size(),则跳转到(2),否则处理最后剩下的一个范围。

    class Solution2 {
    public:
        vector<string> summaryRanges(vector<int>& nums) {
            int n = nums.size();
            if (n == 0)
                return vector<string>();
            if (n == 1)
                return vector<string>(1, intToString(nums[0]));
    
            int ind1 = 0;
            int ind2 = 1;
            int left = ind1;
            vector<string> res;
            while (ind1 < n && ind2 < n)
            {
                if (nums[ind2] == nums[ind1] + 1)
                {
                    ind2++;
                    ind1++;
                }
                else
                {
                    string rs = "";
                    rs += intToString(nums[left]);
                    if (ind2 - 1 != left)
                        rs += "->" + intToString(nums[ind2 - 1]);
                    left = ind1 = ind2++;
    
                    res.push_back(rs);
                }
            }
            string rs = "";
            rs += intToString(nums[left]);
            if (--ind2 != left)
                rs += "->" + intToString(nums[ind2]);
            res.push_back(rs);
    
            return res;
        }
    
    private:
        string intToString(const int& i)
        {        
            stringstream ss;
            ss << i;
            string s = ss.str();
            return s;
        }
    };

     注意:(1)考虑nums.size()为0或者1的情况;(2)整数转换为string的处理,考虑负数、最小的整数和最大的整数这些极端情况。可以使用to_string()。

  • 相关阅读:
    后缀数组/LCP
    Manachar's Algorithm
    自动AC机qwq(大雾)以及trie图fail图的一些结论
    平衡树有关题目小结
    洛谷日报索引(转)
    初始化函数的简单写法
    关于对拍
    第12组 Alpha冲刺(4/6)
    第12组 Alpha冲刺(3/6)
    第12组 Alpha冲刺(2/6)
  • 原文地址:https://www.cnblogs.com/aprilcheny/p/4854198.html
Copyright © 2011-2022 走看看