Menu
CoddyTech

Longest Consecutive Sequence

Trung bìnhBămpython iconjava iconcpp iconc iconjs icon+10

Bạn nhận được một mảng (array) số nguyên nums không theo thứ tự cụ thể nào. Một dãy liên tiếp là nhóm các giá trị x, x+1, x+2 và cứ tiếp tục như vậy, trong đó mỗi giá trị đều xuất hiện ở đâu đó trong nums. Hãy trả về độ dài của dãy liên tiếp dài nhất. Giá trị xuất hiện nhiều lần chỉ được tính một lần.

Hàm

longestConsecutive(nums: integer-array) → integer
numsinteger-array
các số nguyên, theo thứ tự bất kỳ, có thể lặp lại
Trả vềinteger
độ dài của dãy giá trị liên tiếp dài nhất có trong nums

Ràng buộc

  • 1 ≤ nums.length ≤ 104
  • -109 ≤ nums[i] ≤ 109
  • Các giá trị có thể lặp lại. Vị trí trong mảng không quan trọng, chỉ cần biết những giá trị nào có mặt.

Ví dụ

Đầu vào
nums = [40, 4, 39, 1, 3, 2, 41]
Đầu ra
4
Giải thích
1, 2, 3 và 4 đều có mặt, tạo thành một dãy gồm 4 giá trị, dù chúng nằm rải rác trong mảng. Dãy còn lại, từ 39 đến 41, chỉ có 3 giá trị.
challenge icon

Câu hỏi mở rộng

Giả sử các giá trị lần lượt được đưa vào và sau mỗi giá trị, bạn phải báo cáo đoạn liên tiếp dài nhất tính đến thời điểm đó. Bạn có thể luôn cập nhật đáp án trong thời gian trung bình O(1) cho mỗi giá trị không?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

nums = [40, 4, 39, 1, 3, 2, 41]

Đầu ra mong đợi

4