동일한 간격의 시간 간격에서 자동차의 위치를 나타내는 숫자 목록이 있다고 가정합니다. 자동차가 일정한 속도로 이동하는 가장 긴 하위 목록의 크기를 찾아야 합니다.
따라서 입력이 위치 =[0, 4, 8, 12, 6, 4, 0]과 같으면 하위 목록이 [0, 4, 8, 12]이므로 출력은 4가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- j :=1
- max_cnt :=0, 현재 :=0
- 거리:=|위치[0] - 위치[1]|
- j <위치의 크기인 동안 do
- 이전 :=위치[j - 1]
- 거리가 |positions[j]와 같은 경우 - 이전| , 그럼
- 현재 :=현재 + 1
- 그렇지 않으면
- max_cnt :=max_cnt 및 현재의 최대값
- 현재 :=1
- 거리:=|위치[j] - 이전|
- max_cnt :=max_cnt 및 현재의 최대값
- j :=j + 1
- max_cnt + 1을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
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))
입력
[0, 4, 8, 12, 6, 4, 0]
출력
4