Python程序:查找汽车速度恒定的最长子列表的大小


假设我们有一个数字列表,表示汽车在等时间间隔内的位置。我们需要找到汽车以恒定速度行驶的最长子列表的大小。

因此,如果输入类似于 positions = [0, 4, 8, 12, 6, 4, 0],则输出将为 4,因为子列表为 [0, 4, 8, 12]。

为了解决这个问题,我们将遵循以下步骤:

  • j := 1
  • max_cnt := 0,current := 0
  • distance := |positions[0] - positions[1]|
  • 当 j < positions 的大小 时,执行以下操作:
    • prev := positions[j - 1]
    • 如果 distance 等于 |positions[j] - prev|,则:
      • current := current + 1
    • 否则:
      • max_cnt := max_cnt 和 current 的最大值
      • current := 1
      • distance := |positions[j] - prev|
    • max_cnt := max_cnt 和 current 的最大值
    • 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

更新于: 2020年12月2日

浏览量 108 次

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.