LeetCode 228 Summary Ranges 解题思路和python代码

题目:

You are given a sorted unique integer array nums.

A range a,b is the set of all integers from a to b (inclusive).

Return the smallest sorted list of ranges that cover all the numbers in the array exactly. That is, each element of nums is covered by exactly one of the ranges, and there is no integer x such that x is in one of the ranges but not in nums.

Each range a,b in the list should be output as:

"a->b" if a != b

"a" if a == b

Example 1:

Input: nums = 0,1,2,4,5,7

Output: "0-\>2","4-\>5","7"

Explanation: The ranges are:

0,2 --> "0->2"

4,5 --> "4->5"

7,7 --> "7"

Example 2:

Input: nums = 0,2,3,4,6,8,9

Output: "0","2-\>4","6","8-\>9"

Explanation: The ranges are:

0,0 --> "0"

2,4 --> "2->4"

6,6 --> "6"

8,9 --> "8->9"

Constraints:

0 <= nums.length <= 20

-231 <= numsi <= 231 - 1

All the values of nums are unique.

nums is sorted in ascending order.

解题思路:

我们从数组第一个数字开始,初始化一个变量start表示当前范围的起始值。

遍历数组中的每一个元素,如果当前元素 numsi 与前一个元素 numsi-1 不连续,那么我们将范围 start, nums\[i-1] 添加到结果中,并更新 start 为当前元素 numsi

遍历结束后,将最后一个范围添加到结果中。

python 复制代码
class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        result = []
        if not nums:
            return result

        start = nums[0]
        for i in range(1, len(nums)):
            if nums[i] != nums[i-1] + 1:
                if start == nums[i-1]:
                    result.append(f"{start}")
                else:
                    result.append(f"{start}->{nums[i-1]}")
                start = nums[i]
        
        if start == nums[-1]:
            result.append(f"{nums[-1]}")
        else:
            result.append(f"{start}->{nums[-1]}")
        return result

time complexity为O(n)。

注意,使用python3。

相关推荐
怪奇云呼军1 小时前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频
zmzb01032 小时前
Python课后习题训练记录Day194
python·opencv·计算机视觉
benchmark_cc2 小时前
批量获取量化数据时,如何设置合理的超时和重试机制?——QuantDash 高性能实战指南
开发语言·人工智能·python·pandas·量化·quantdash
2601_966949652 小时前
使用 Pandas 读取批量数据时如何避免内存溢出?QuantDash 量化数据工程师避坑指南
开发语言·python·pandas·tushare·akshare·quantdash
65岁退休Coder3 小时前
LangChain v1.3.4 笔记 - 08 MCP & 相关概念
后端·python·langchain
wdloumiga3 小时前
使用 Construct 3零基础做一些2D小游戏
python·游戏·游戏2d
_Narcissus_3 小时前
排序算法总结表格
c语言·数据结构·c++·笔记·算法·排序算法·总结
用户8356290780513 小时前
使用 Python 查找和替换 Word 文档中的文本
后端·python
黑马水牛4 小时前
Carla仿真系列:9_Carla 单目障碍物测距,四种方法原理与实测
经验分享·python·深度学习·计算机视觉·ros·传感器·carla仿真
一只小小的芙厨4 小时前
前缀和与差分
数据结构·算法