Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 자동차 속도가 일정한 가장 긴 하위 목록의 크기를 찾는 프로그램

<시간/>

동일한 간격의 시간 간격에서 자동차의 위치를 ​​나타내는 숫자 목록이 있다고 가정합니다. 자동차가 일정한 속도로 이동하는 가장 긴 하위 목록의 크기를 찾아야 합니다.

따라서 입력이 위치 =[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