Candy

两个数组,从两边扫描。
题目中,如果rating相等的时候,不要求得到的糖一样,不是很科学。真正面试时要问清楚requirement。

public class Solution {
public int candy(int[] ratings) {
if(ratings == null || ratings.length == 0) return 0;
int len = ratings.length;
int[] left = new int[len];
int[] right = new int[len];
left[0] = 1;
right[len - 1] = 1;
int result = 0;
for(int i = 1; i < len; i++) {
if(ratings[i] > ratings[i - 1]) {
left[i] = left[i - 1] + 1;
//} else if(ratings[i] == ratings[i - 1]) {
// left[i] = left[i - 1];
} else {
left[i] = 1;
}
}
for(int i = len - 2; i >= 0; i--) {
if(ratings[i] > ratings[i + 1]) {
right[i] = right[i + 1] + 1;
//} else if(ratings[i] == ratings[i + 1]) {
// right[i] = right[i + 1];
} else {
right[i] = 1;
}
}
for(int i = 0; i < len; i++) {
result += Math.max(left[i], right[i]);
}
return result;
}
}


posted @ 2014-12-28 12:23  江南第一少  阅读(130)  评论(0)    收藏  举报