228. 汇总区间(Python)

题目

难度:★★☆☆☆
类型:数组
方法:分类讨论

传送门

给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。

示例

示例 1:

输入: [0,1,2,4,5,7]
输出: ["0->2","4->5","7"]
解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。

示例 2:

输入: [0,2,3,4,6,8,9]
输出: ["0","2->4","6","8->9"]
解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。

解答

题目很直接,但是需要考虑的情况周到,尤其是对末尾元素的处理。

遍历范围,从第二个元素开始,到最后一个元素,这里针对最后一个元素单独进行讨论。需要准备一个整型变量start来表示每一段的起始下标。

class Solution:
    def summaryRanges(self, nums):
        res = []                                                            # 结果列表
        start = 0                                                           # 每一段的起始下标
        for end in range(1, len(nums)+1):                                   # 从第二个元素开始遍历到最后一个
            if end == len(nums) or nums[end] != nums[end-1] + 1:
                if end == start + 1:                                        # 即这一段只含有一个元素
                    res.append("{}".format(nums[start]))                    # 将这一个元素添加进来
                else:                                                       # 这一段含有多个元素
                    res.append("{}->{}".format(nums[start], nums[end-1]))   # 添加范围
                start = end                                                 # 更新当前起始端下标
        return res

如有疑问或建议,欢迎评论区留言~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容