Giả sử chúng ta có một danh sách các số được gọi là num, chúng ta phải tìm độ dài của dãy con số học dài nhất. Như chúng ta đã biết, dãy S [i] là dãy số học khi S [i + 1] - S [i] có cùng giá trị với mọi i trong phạm vi (0 ≤ i
Vì vậy, nếu đầu vào giống như nums =[1, 4, 7, 10, 13, 20, 16], thì đầu ra sẽ là 6, dãy con [1, 4, 7, 10, 13, 16] là một số học bởi vì sự khác biệt giữa mỗi phần tử liên tiếp là 3.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ (Python)
from collections import defaultdict
class Solution:
def solve(self, arr):
n = len(arr)
if n <= 1:
return n
res = 0
dp = defaultdict(lambda: 1)
for i in range(1, n):
for j in range(i):
diff = arr[i] - arr[j]
dp[i, diff] = dp[j, diff] + 1
res = max(res, dp[i, diff])
return res
ob = Solution()
nums = [1, 4, 7, 10, 13, 20, 16]
print(ob.solve(nums))
Đầu vào
[1, 4, 7, 10, 13, 20, 16]
Đầu ra
6