leetcode第135号问题分发糖果
来源:8-8 Java中的PriorityQueue
落叶灯花
2018-12-11
class Solution {
public int candy(int[] ratings) {
int startC = 1;
int sum = startC;
ArrayList arrayList = new ArrayList();
arrayList.add(startC);
for (int i = 1; i < ratings.length; i++) {
if (ratings[i - 1] < ratings[i]) {
startC = startC + 1;
arrayList.add(startC);
sum = sum + (startC);
} else {
if (startC == 1 && ratings[i - 1] != ratings[i] ) {
sum = sum + startC;
int startD=1;
arrayList.add(startC);
for (int j = i; j>0; j–) {
if(ratings[j-1]>ratings[j]&&arrayList.get(j-1)<=startD) {
startD++;
sum++;
}else {
break;
}
}
} else {
startC = 1;
arrayList.add(startC);
sum = sum + startC;
}
}
}
return sum;
}
}
我写的代码超出了时间限制,老师有没有更轻便的解决方法呢?
1回答
-
两个数组,一个记录让每个元素左侧满足条件了;一个记录让每个元素右侧满足条件。每个位置的结果是两个数组相应位置的最大值。
我的参考代码:https://github.com/liuyubobobo/Play-Leetcode/blob/master/0135-Candy/cpp-0135/main.cpp
加油!:)
012018-12-11
相似问题