O(n), O(1), slope算法。重点:
if down >= peak:
res += 1 这一部分考虑了下降超过上升数的情况
#
# pick candy
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
def candy(self , arr ):
# write code here
n = len(arr)
up, down = 0, 0
res, peak = 1, 1
print(0, up, down, peak, res)
for i in range(1, n):
if arr[i] > arr[i-1]:
down=0
up += 1
res += up+1
peak = up+1
elif arr[i] < arr[i-1]:
up=0
down += 1
res += down
if down >= peak:
res += 1
else:
res += 1
peak = 1
up, down = 0, 0
print(i, up, down, peak, res)
return res


京公网安备 11010502036488号