Menu
CoddyTech

Summary Ranges

Bạn nhận được một mảng nums gồm các số nguyên phân biệt, đã được sắp xếp. Hãy chia mảng thành ít khoảng liên tiếp nhất có thể, sao cho mỗi giá trị thuộc đúng một khoảng. Viết khoảng a..b dưới dạng văn bản "a->b", hoặc dưới dạng "a" nếu khoảng đó chỉ có một giá trị. Trả về các khoảng theo thứ tự tăng dần.

Hàm

summaryRanges(nums: integer-array) → string-array
numsinteger-array
mảng số nguyên phân biệt đã sắp xếp
Trả vềstring-array
các khoảng giá trị dưới dạng văn bản, từ giá trị nhỏ nhất đến lớn nhất

Ràng buộc

  • 1 ≤ nums.length ≤ 5000
  • -109 ≤ nums[i] ≤ 109
  • nums được sắp xếp theo thứ tự tăng dần và không có phần tử trùng lặp.

Ví dụ

Đầu vào
nums = [0, 1, 2, 5, 6, 9]
Đầu ra
["0->2", "5->6", "9"]
Giải thích
0, 1, 2 nối tiếp nhau, nên chúng tạo thành "0->2". Bước nhảy từ 2 đến 5 bắt đầu một khoảng mới, "5->6", còn 9 đứng riêng thành "9".
challenge icon

Câu hỏi mở rộng

Giả sử nums có thể chứa các giá trị trùng lặp, như [1, 2, 2, 3]. Bạn sẽ thay đổi gì để chương trình vẫn in ra "1->3"?

Đặt lại code
def summaryRanges(nums):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Đối số

nums = [0, 1, 2, 5, 6, 9]

Đầu ra mong đợi

["0->2", "5->6", "9"]