Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm độ dài của dãy con số học dài nhất với hiệu số không đổi trong Python

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]
  • 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