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。

相关推荐
玉鸯41 分钟前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
weixin_446260851 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
qetfw2 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
用户8356290780513 小时前
Python 实现 Excel 页面布局与打印设置自动化
后端·python
一次旅行3 小时前
Python+大模型端到端自动化日报系统
开发语言·python·自动化
天天爱吃肉82183 小时前
【电源拆解:跟着问答逐一认识开关适配器PCB元器件】
大数据·人工智能·python·功能测试·嵌入式硬件·汽车
_Jimmy_3 小时前
AI应用开发工程师面试题库
人工智能·python·深度学习·机器学习·知识图谱
用户8356290780513 小时前
Python 实现 Excel 命名范围(Named Range)的创建与管理
后端·python