leetcode汇总区间

给定一个  无重复元素 的 有序 整数数组 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"
 

提示:

0 <= nums.length <= 20
-231 <= nums[i] <= 231 - 1
nums 中的所有值都 互不相同
nums 按升序排列

class Solution(object):
    def summaryRanges(self, nums):
        """
        :type nums: List[int]
        :rtype: List[str]
        """
        t=[]
        l,r=0,0
        while r<len(nums):
            if r<len(nums)-1 and nums[r]+1==nums[r+1]:
                r+=1
            else:
                if l==r:
                    t.append(str(nums[l]))
                else:
                    t.append(str(nums[l])+'->'+str(nums[r]))
                r+=1
                l=r                                         
        return t

双指针还是不太理解 ,思维方式有待提高

以下是chatgpt生成的代码解释:

这段代码实现了一个 "总结区间" 的功能,即将连续的数值区间表示成一个范围。

具体来说,函数 summaryRanges 接受一个整数列表 nums 作为输入,并返回一个带整数范围的字符串列表。该函数使用双指针算法来遍历整个数组 nums,在处理过程中动态地寻找连续的区间。

具体做法是:用两个指针 lr 分别指向当前区间的左端点和右端点。然后检查右指针是否可以向右移动,如果下一个数与当前数相邻,说明当前区间可继续扩展,右指针向右移动一位。如果不是,则说明已经到达当前区间的最后一个数,需要将当前区间总结为一个字符串并将其添加到结果列表中。

当左指针和右指针相同时,说明当前区间只包含一个数组元素,直接将该元素转换为字符串并添加到结果列表中。否则,说明当前区间包含多个连续的数组元素,需要使用 "start->end" 格式进行总结。最后,将右指针加1,重置左指针,进入下一个循环。

最终,函数返回一个字符串列表,其中每个元素表示原始数组中连续的数值区间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值