• [LeetCode] 228. Summary Ranges


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

    Example 1:

    Input:  [0,1,2,4,5,7]
    Output: ["0->2","4->5","7"]
    Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
    

    Example 2:

    Input:  [0,2,3,4,6,8,9]
    Output: ["0","2->4","6","8->9"]
    Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.

    汇总区间。

    给定一个无重复元素的有序整数数组 nums 。

    返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。

    列表中的每个区间范围 [a,b] 应该按如下格式输出:

    "a->b" ,如果 a != b
    "a" ,如果 a == b

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/summary-ranges
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    影子题163。这个题不涉及什么算法或者思路,但是注意到如果是形成一个range的数字,会满足nums[i] + 1 == nums[i + 1],如果不满足这个条件,就要开始结算range了。如果跳出while循环的时候,一开始的num == 现在的nums[i]那说明这个数字是单独存在的。

    时间O(n)

    空间O(1)

    Java实现

     1 class Solution {
     2     public List<String> summaryRanges(int[] nums) {
     3         List<String> res = new ArrayList<>();
     4         if (nums == null || nums.length == 0) {
     5             return res;
     6         }
     7         for (int i = 0; i < nums.length; i++) {
     8             // range start
     9             int num = nums[i];
    10             while (i < nums.length - 1 && nums[i] + 1 == nums[i + 1]) {
    11                 i++;
    12             }
    13             // 跳出while循环的时候,nums[i]应该是range的end
    14             if (num != nums[i]) {
    15                 res.add(num + "->" + nums[i]);
    16             } else {
    17                 res.add(num + "");
    18             }
    19         }
    20         return res;
    21     }
    22 }

    相关题目

    163. Missing Ranges

    228. Summary Ranges

    LeetCode 题目总结

  • 相关阅读:
    Opencv之像素值的获取
    亚像素级角点检测
    Shi-Tomasi角点检测
    卡尔曼滤波
    Harris角点检测理论
    ROS2GO 与WIN10 双系统安装
    数字集成电路物理设计学习总结——物理设计建库域验证
    跨时钟域信号传输(二)——数据信号篇
    跨时钟域信号传输(一)——控制信号篇
    亚稳态与多时钟切换
  • 原文地址:https://www.cnblogs.com/cnoodle/p/12881673.html
Copyright © 2020-2023  润新知