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回答

liuyubobobo

2018-12-11

两个数组,一个记录让每个元素左侧满足条件了;一个记录让每个元素右侧满足条件。每个位置的结果是两个数组相应位置的最大值。


我的参考代码:https://github.com/liuyubobobo/Play-Leetcode/blob/master/0135-Candy/cpp-0135/main.cpp


加油!:)

0
1
落叶灯花
谢谢老师
2018-12-11
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程