题目
解析
这道题使用贪心策略,核心思想就是一句话:每次遍历中,只考虑一侧相邻元素的大小关系。具体流程为:
- 将糖果数组初始化为1,进行两次遍历
- 第一次遍历从左向右进行,如果右侧位置对应的rating值比左侧大,将candy相应右侧位置的值更新为左侧元素加1
- 第二次遍历从右向左进行,如果左侧元素对应的rating值比右侧元素要大,且左侧位置对应糖果不大于右侧位置,则更新左侧位置糖果值为右侧元素加1
python代码
class Solution:
def candy(self, ratings: List[int]) -> int:
N = len(ratings)
candy = [1]*N
for i in range(N-1):
if ratings[i]