• Leetcode 228. 汇总区间


    地址 https://leetcode-cn.com/problems/summary-ranges/

    给定一个无重复元素的有序整数数组 nums 。
    返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。
    也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。
    列表中的每个区间范围 [a,b] 应该按如下格式输出:
    "a->b" ,如果 a != b
    "a" ,如果 a == b
    
    示例 1:
    输入:nums = [0,1,2,4,5,7]
    输出:["0->2","4->5","7"]
    解释:区间范围是:
    [0,2] --> "0->2"
    [4,5] --> "4->5"
    [7,7] --> "7"
    
    示例 2:
    输入:nums = [0,2,3,4,6,8,9]
    输出:["0","2->4","6","8->9"]
    解释:区间范围是:
    [0,0] --> "0"
    [2,4] --> "2->4"
    [6,6] --> "6"
    [8,9] --> "8->9"
    
    示例 3:
    输入:nums = []
    输出:[]
    
    示例 4:
    输入:nums = [-1]
    输出:["-1"]
    
    示例 5:
    输入:nums = [0]
    输出:["0"]
     
    
    提示:
    0 <= nums.length <= 20
    -231 <= nums[i] <= 231 - 1
    nums 中的所有值都 互不相同
    nums 按升序排列
    

    解答
    本意就是数组排序(本题数组已经排过序)
    然后找出连续的数字的起始和结束数字 加入答案. 这里采取双指针方案
    主要是注意各种边界条件。

    class Solution {
    public:
        vector<string>  ans;
        vector<string> summaryRanges(vector<int>& nums) {
            int l =0; int r = 0;
    
            while(l<nums.size() && r < nums.size()){
                while( r < nums.size()-1 && nums[r+1] == nums[r]+1){
                    r++;
                }
                if(r >= nums.size()){
                    r = nums.size()-1;
                }
                string tmp = to_string(nums[l])+"->"+to_string(nums[r]);
                if(l== r){tmp = to_string(nums[l]);}
                ans.push_back(tmp);
                l=r+1; r=l;
            }
    
            return ans;
        }
    };
    

    我的视频题解空间

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    1094. Car Pooling
    121. Best Time to Buy and Sell Stock
    58. Length of Last Word
    510. Inorder Successor in BST II
    198. House Robber
    57. Insert Interval
    15. 3Sum java solutions
    79. Word Search java solutions
    80. Remove Duplicates from Sorted Array II java solutions
    34. Search for a Range java solutions
  • 原文地址:https://www.cnblogs.com/itdef/p/15257664.html
Copyright © 2020-2023  润新知