Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm các khoảng liên tiếp của mảng số duy nhất trong Python

Cho danh sách số duy nhất nums, tìm danh sách các khoảng bao trùm các dãy số liên tiếp.

Ví dụ

Đầu vào: [10, 11, 12, 15, 16, 17, 28, 30].
Đầu ra: [[10,12], [15,17], [28,28], [30,30]].

Thuật toán

  1. Sắp xếp nums.
  2. Thêm giá trị lớn (inf) vào cuối.
  3. Khởi tạo ans = [], l = nums[0].
  4. Duyệt i từ 1: nếu nums[i] != nums[i-1] + 1, thêm khoảng [l, nums[i-1]], cập nhật l = nums[i].
  5. Trả về ans.

Mã nguồn Python

class Solution:
    def solve(self, nums):
        nums.sort()
        nums.append(1e9)
        ans = []
        l = nums[0]
        for i in range(1, len(nums)):
            if nums[i] != nums[i-1] + 1:
                ans.append([l, nums[i-1]])
                l = nums[i]
        return ans

ob = Solution()
nums = [10, 11, 12, 15, 16, 17, 28, 30]
print(ob.solve(nums))

Đầu vào / Đầu ra

Input: [10, 11, 12, 15, 16, 17, 28, 30]
Output: [[10, 12], [15, 17], [28, 28], [30, 30]]