力扣228. 汇总区间

发布时间:2023年12月20日

双指针法

  • 思路:
    • left 指针为每次统计完区间的起始点;
    • right 指针统计区间,当前值等于前一个元素加1则移动指针;
    • 统计出区间之后记录到vector中;
class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {
        std::vector<std::string> result;

        int size = nums.size();
        for (int i = 0; i < size;) {
            int left = i;
            i++;

            while (i < size && (nums[i] == nums[i -1] + 1)) {
                i++;
            }

            int right = i - 1;
            std::string tmp = std::to_string(nums[left]);
            if (left < right) {
                tmp.append("->");
                tmp.append(std::to_string(nums[right]));
            }
            result.push_back(std::move(tmp));
        }

        return result;
    }
};

文章来源:https://blog.csdn.net/N_BenBird/article/details/135097396
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。