LeetCode——228.汇总区间

在这里插入图片描述
其实就是查找一个数组确实的数字,这个数字怎么查找嗯?通过**nums[index]+1==nums[index+1]**去进行查找,这样最终会同得到确实的数字,然后确定一个区间,找出区间的两头数字即可。如果该区间的长度是1的话,那么就直接输出单个数字即可。

class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        res = []
        if not nums:
            return []
        if len(nums)==1:
            return [str(nums[0])]

        n = len(nums)
        # 初始化双指针均指向数组头部
        left = 0
        right = 0

        ans = []
        # 开始遍历
        while right < n:
            # 数组有序
            # 先限定边界,查找间隔大于 1 的部分
            while right < n - 1 and nums[right] + 1 == nums[right+1]:
                right += 1
            # 找到间隔之后,将前面连续部分按照规定格式添加到结果列表中
            
            if nums[left] != nums[right]:
                ans.append(str(nums[left])+'->'+str(nums[right]))
            else:
                ans.append(str(nums[left]))
            # 维护更新 right 和 left
            right += 1
            left = right
            
        return ans

总结:处理字符串的时候一般都使用双指针进行操作。

猜你喜欢

转载自blog.csdn.net/weixin_37724529/article/details/112465508