Giả sử chúng ta có một danh sách các số được gọi là nums, trong đó tất cả các phần tử là duy nhất. Chúng ta phải tìm độ dài của danh sách con dài nhất chứa các phần tử liên tiếp.
Vì vậy, nếu đầu vào là nums =[3, 6, 7, 5, 4, 9], thì đầu ra sẽ là 5, vì danh sách con là [3, 6, 7, 5, 4] này chứa tất cả các phần tử liên tiếp từ 3 đến 7.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- ret:=0
- đối với tôi trong phạm vi từ 0 đến kích thước là nums - 1, thực hiện
- lhs:=nums [i]
- rhs:=nums [i]
- đối với j trong phạm vi i đến kích thước của nums - 1, thực hiện
- lhs:=tối thiểu lhs và nums [j]
- rhs:=tối đa là rhs và nums [j]
- nếu (rhs - lhs) giống với (j - i), thì
- ret:=tối đa ret và (j - i + 1)
- trả lời lại
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(nums): ret = 0 for i in range(len(nums)): lhs = nums[i] rhs = nums[i] for j in range(i, len(nums)): lhs = min(lhs, nums[j]) rhs = max(rhs, nums[j]) if rhs - lhs == j - i: ret = max(ret, j - i + 1) return ret nums = [3, 6, 7, 5, 4, 9] print(solve(nums))
Đầu vào
[3, 6, 7, 5, 4, 9]
Đầu ra
1