Python程序:查找最长的汽车等速子列表的大小
假设我们有一个数字列表,表示车在等间隔的时间内的位置。我们必须找到最长的汽车速度恒定的子列表的大小。
因此,如果输入为positions = [0、4、8、12、6、4、0],则输出将为4,因为子列表为[0、4、8、12]。
要解决此问题,我们将遵循以下步骤-
- j:= 1
- max_cnt:= 0,current:= 0
- 距离:= | positions [0] – positions [1] |
- while j < positions的大小时,执行
- prev:= positions [j-1]
- 如果距离与|positions [j] – prev|相同,则
- current:= current + 1
- 否则,
- max_cnt:= max(max_cnt和current)
- current:= 1
- 距离:= | positions [j] – prev |
- max_cnt:= max(max_cnt和current)
- j:= j + 1
- 返回m ax_cnt + 1
让我们看以下示例以更好地理解-
更多Python相关文章,请阅读:Python 教程
例子
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