📅  最后修改于: 2023-12-03 15:12:23.543000             🧑  作者: Mango
在一个给定的二进制数组中,每个元素要么为0,要么为1。现在玩家可以通过选择一个或两个连续的数组元素来获得分数,但是选择的元素不能是同一个元素。玩家获得的分数等于选择的元素中出现1的个数。请编写一个函数,计算出玩家能够获得的最低分数。
def get_min_score(nums: List[int]) -> int:
pass
输入: [1,0,1,0,1]
输出: 1
解释: 玩家选择的两个连续元素可以是第2和第3个元素,此时得分为1分。
cur_score
和历史最小得分min_score
;from typing import List
def get_min_score(nums: List[int]) -> int:
cur_score = 0 # 当前元素的得分
min_score = float("inf") # 历史最小得分
for i in range(len(nums)):
# 当前元素为0,得分为0
if nums[i] == 0:
cur_score = 0
# 当前元素为1,选择当前元素或当前元素和前一个元素中得分最小的一种
else:
if i > 0:
cur_score = min(nums[i], nums[i-1])
else:
cur_score = nums[i]
# 更新历史最小得分
min_score = min(min_score, cur_score)
return min_score