Giả sử chúng ta có một danh sách các số num và một giá trị khác khác nhau, chúng ta phải tìm độ dài của dãy con số học dài nhất mà sự khác biệt giữa bất kỳ số liên tiếp nào trong dãy con cũng giống như diff.
Vì vậy, nếu đầu vào là nums =[-1, 1, 4, 7, 2, 10] diff =3, thì đầu ra sẽ là 4, bởi vì, chúng ta có thể chọn dãy con như [1, 4, 7, 10 ].
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- saw:=một từ điển trống, giá trị mặc định là 0 khi không có khóa
- mx:=0
- đối với mỗi x trong nums, thực hiện
- nếu x - diff được nhìn thấy, thì
- đã xem [x]:=đã thấy [x - diff] + 1
- nếu không,
- đã xem [x]:=1
- mx:=tối đa là mx và đã thấy [x]
- nếu x - diff được nhìn thấy, thì
- trả lại mx
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
from collections import defaultdict def solve(nums, diff): seen = defaultdict(int) mx = 0 for x in nums: if x - diff in seen: seen[x] = seen[x - diff] + 1 else: seen[x] = 1 mx = max(mx, seen[x]) return mx nums = [-1, 1, 4, 7, 2, 10] diff = 3 print(solve(nums, diff))
Đầu vào
[-1, 1, 4, 7, 2, 10], 3
Đầu ra
4