标签:贪心
解题思路参考:
https://blog.nowcoder.net/n/aff3f403aeaf43baa73e35253f71b325
class Solution:
def candy(self , arr: List[int]) -> int:
# 1.创建一个N个元素的数组,记录每个元素对应的糖果数,初始值为1
candys = [1] * len(arr)
# 2.从左往右遍历(第2个元素 -》 最后个元素)
for i in range(1, len(arr)):
# 如果右边元素比左边大,说明是递增关系,右边比左边元素增大1个;否则,保持1不变
if arr[i] > arr[i - 1]:
candys[i] = candys[i - 1] + 1
i = len(arr) - 2
# 3.从右往左遍历(倒数第2个元素 -》 第1个元素)
while i >= 0:
# 如果左边元素比右边大,说明是递减关系;如果左边的糖果数未比右边大,则左边比右边元素增大1个;否则,保持不变
if arr[i] > arr[i + 1] and candys[i] <= candys[i + 1]:
candys[i] = candys[i + 1] + 1
i -= 1
# 4.返回糖果总数
return sum(candys)