leedcode-彙總區間

Junior_bond發表於2024-03-18

自己寫的:

class Solution:
    def summaryRanges(self, nums):
        my_li = []  # 建立一個空列表用於儲存結果
        if not nums:  # 如果輸入列表為空
            return my_li  # 返回空列表
        if len(nums) == 1:  # 如果輸入列表只有一個元素
            my_li.append(f"{nums[0]}")  # 將該元素新增到結果列表中
        start = nums[0]  # 初始化區間起始值為列表的第一個元素
        for i in range(len(nums) - 1):  # 遍歷列表元素,注意遍歷範圍是長度減一
            if nums[i] != nums[i + 1] - 1:  # 如果當前元素與下一個元素不連續
                end = nums[i]  # 結束值為當前元素
                if start == end:  # 如果起始值等於結束值
                    my_li.append(f"{start}")  # 新增單個值到結果列表
                if start != end:  # 如果起始值不等於結束值
                    my_li.append(f"{start}->{end}")  # 新增區間到結果列表
                start = nums[i + 1]  # 更新起始值為下一個元素

                if i == len(nums) - 2:  # 如果已經到達倒數第二個元素
                    my_li.append(f"{nums[-1]}")  # 直接新增最後一個元素到結果列表
            if nums[i] == nums[i + 1] - 1:  # 如果當前元素與下一個元素連續
                if i == len(nums) - 2:  # 如果已經到達倒數第二個元素
                    end = nums[-1]  # 結束值為最後一個元素
                    my_li.append(f"{start}->{end}")  # 新增起始值到結束值的區間到結果列表

        return my_li  # 返回結果列表

相關文章