
LeetCode:228. Summary Ranges汇总区间(C语言)
初始化当前区间的起始和结束点为数组的第一个元素。 遍历数组中的每个元素: 记录最后一个区间。 将这些区间转换为指定的字符串格式输出。 初始化检查:首先检查输入数组是否为空,如果为空,则返回空列表。 遍历数组:从第二个元素开始遍历,检查当前元素是否与前一个元素相差1,以确定是否在同一个区间内。 记录区间:当遇到相差大于1的元素时,记录当前区间,并重置当前区间的起始和结束点。 处理最后一个区间:最后一个区间需要单独处理以确保被记录。 输出结果:将所有区间转换为指定的字符串格式并返回结果。
发布日期:2021-05-08 18:45:15
浏览次数:13
分类:精选文章
本文共 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
代码解释
这种方法确保了每个区间都是最小的连续整数序列,并且覆盖了数组中的所有元素。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月18日 11时01分47秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
上周热点回顾(1.21-1.27)
2019-03-06
上周热点回顾(6.3-6.9)
2019-03-06
上周热点回顾(8.12-8.18)
2019-03-06
【故障公告】升级阿里云 RDS SQL Server 实例故障经过
2019-03-06
蹒跚来迟:新版博客后台上线公测
2019-03-06
上周热点回顾(9.16-9.22)
2019-03-06
上周热点回顾(11.4-11.10)
2019-03-06
[网站公告]11月26日00:00-04:00阿里云RDS升级
2019-03-06
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2019-03-06
上周热点回顾(12.16-12.22)
2019-03-06
云计算之路-阿里云上:对“黑色30秒”问题的猜想
2019-03-06
云计算之路-阿里云上:“黑色30秒”走了,“黑色1秒”来了,真相也许大白了
2019-03-06
云计算之路-阿里云上:奇怪的CPU 100%问题
2019-03-06
云计算之路-阿里云上:2014年6月12日12点IIS请求到达量突降
2019-03-06
上周热点回顾(6.9-6.15)
2019-03-06
上周热点回顾(6.16-6.22)
2019-03-06
上周热点回顾(6.23-6.29)
2019-03-06
上周热点回顾(10.20-10.26)
2019-03-06
上周热点回顾(2.16-2.22)
2019-03-06
上周热点回顾(3.2-3.8)
2019-03-06