题解 | #分糖果问题#
分糖果问题
https://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# pick candy
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
def candy(self , arr: List[int]) -> int:
# write code here
n = len(arr)
ans = [0] * n
ans[0] = 1
for i in range(1,n):
if arr[i] > arr[i-1]:
ans[i] = ans[i-1] + 1
else:
ans[i] = 1
right = 0
ret = 0
for j in range(n-1,-1,-1):
if j < n-1 and arr[j] > arr[j+1]:
right += 1
else:
right = 1
ret += max(right,ans[j])
return ret
贪心策略,左规则和右规则都要满足,然后循环判断,取左右规则中最大的加入到最终结果中作为需要的糖果数量
