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
- Sắp xếp
nums. - Thêm giá trị lớn (inf) vào cuối.
- Khởi tạo
ans = [],l = nums[0]. - Duyệt
itừ 1: nếunums[i] != nums[i-1] + 1, thêm khoảng[l, nums[i-1]], cập nhậtl = nums[i]. - 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]]