博客
关于我
LeetCode:228. Summary Ranges汇总区间(C语言)
阅读量:388 次
发布时间:2019-03-05

本文共 1128 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要找到一个方法,来生成一个最小的有序区间范围列表,这些区间恰好覆盖给定数组中的所有元素,并且不存在不在数组中的数字。

方法思路

我们可以通过遍历数组来找到每个连续的区间。具体步骤如下:

  • 初始化当前区间的起始和结束点为数组的第一个元素。
  • 遍历数组中的每个元素:
    • 如果当前元素与前一个元素相差1,则继续当前区间。
    • 如果当前元素与前一个元素相差大于1,则记录当前区间,开始一个新的区间。
  • 记录最后一个区间。
  • 将这些区间转换为指定的字符串格式输出。
  • 这种方法利用了数组的有序性质,确保每个区间都是连续的整数序列。

    解决代码

    def summaryRanges(nums):    if not nums:        return []    result = []    current_start = nums[0]    current_end = current_start    for num in nums[1:]:        if num == current_end + 1:            current_end = num        else:            if current_start == current_end:                result.append(f"{current_start}")            else:                result.append(f"{current_start}->{current_end}")            current_start = num            current_end = num    # 处理最后一个区间    if current_start == current_end:        result.append(f"{current_start}")    else:        result.append(f"{current_start}->{current_end}")    return result

    代码解释

  • 初始化检查:首先检查输入数组是否为空,如果为空,则返回空列表。
  • 遍历数组:从第二个元素开始遍历,检查当前元素是否与前一个元素相差1,以确定是否在同一个区间内。
  • 记录区间:当遇到相差大于1的元素时,记录当前区间,并重置当前区间的起始和结束点。
  • 处理最后一个区间:最后一个区间需要单独处理以确保被记录。
  • 输出结果:将所有区间转换为指定的字符串格式并返回结果。
  • 这种方法确保了每个区间都是最小的连续整数序列,并且覆盖了数组中的所有元素。

    转载地址:http://yadzz.baihongyu.com/

    你可能感兴趣的文章
    Window环境下安装Redis 并 自启动Redis 及 Redis Desktop Manager
    查看>>
    简单说说TCP三次握手、四次挥手机制
    查看>>
    .net Core 使用IHttpClientFactory请求
    查看>>
    多线程之旅(准备阶段)
    查看>>
    Python 之网络式编程
    查看>>
    MySql5.5安装步骤及MySql_Front视图配置
    查看>>
    mybatis绑定错误-- Invalid bound statement (not found)
    查看>>
    springmvc Controller详解
    查看>>
    mybatis #{}和${}区别
    查看>>
    Java Objects工具类重点方法使用
    查看>>
    Java内存模型(JMM)
    查看>>
    AQS相关
    查看>>
    在IIS与SQL Server 2005中设置,让Reporting Services发布的web报表允许匿名访问
    查看>>
    abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)
    查看>>
    abp(net core)+easyui+efcore实现仓储管理系统——多语言(十)
    查看>>
    abp(net core)+easyui+efcore实现仓储管理系统——入库管理之八(四十四)
    查看>>
    WCF学习之旅—第三个示例之一(二十七)
    查看>>
    java ThreadPoolExecutor初探
    查看>>
    Markdown进阶
    查看>>
    快速指数算法
    查看>>