Giả sử chúng ta có một danh sách các con số đại diện cho vị trí của một chiếc ô tô trong những khoảng thời gian cách đều nhau. Chúng tôi phải tìm kích thước của danh sách phụ dài nhất mà ô tô đang di chuyển với tốc độ không đổi.
Vì vậy, nếu đầu vào giống như các vị trí =[0, 4, 8, 12, 6, 4, 0], thì đầu ra sẽ là 4, vì danh sách con là [0, 4, 8, 12].
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- j:=1
- max_cnt:=0, hiện tại:=0
- khoảng cách:=| vị trí [0] - vị trí [1] |
- while j
- trước:=vị trí [j - 1]
- nếu khoảng cách giống như | vị trí [j] - trước | , sau đó
- hiện tại:=current + 1
- nếu không,
- max_cnt:=tối đa của max_cnt và hiện tại
- hiện tại:=1
- khoảng cách:=| vị trí [j] - trước |
- max_cnt:=tối đa của max_cnt và hiện tại
- j:=j + 1
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution: def solve(self, positions): j = 1 max_cnt = 0 current = 0 distance = abs(positions[0] - positions[1]) while j < len(positions): prev = positions[j - 1] if distance == abs(positions[j] - prev): current += 1 else: max_cnt = max(max_cnt, current) current = 1 distance = abs(positions[j] - prev) max_cnt = max(max_cnt, current) j += 1 return max_cnt + 1 ob = Solution() positions = [0, 4, 8, 12, 6, 4, 0] print(ob.solve(positions))
Đầu vào
[0, 4, 8, 12, 6, 4, 0]
Đầu ra
4