【leetcode】135.(Hard)Candy
阿新 • • 發佈:2018-12-18
解題思路:
3次遍歷:
第一次從左向右:自己等級比左邊高,則自己的糖是[左邊糖數+1],否則自己一顆糖
第二次從右向左:如果自己等級比右邊高,但是糖沒有右邊多,則自己糖數是[右邊糖數+1]
第三次:統計所有糖果數
時間複雜度O(n) 空間複雜度:O(n)
提交程式碼:
class Solution {
public int candy(int[] ratings) {
if(ratings.length==0) return 0;
int[] candys=new int[ratings.length];
candys[0]=1;
for (int i=1;i<ratings.length;i++) {
if(ratings[i]>ratings[i-1]) candys[i]=candys[i-1]+1;
else candys[i]=1;
}
for(int i=ratings.length-2;i>=0;i--) {
if(ratings[i]>ratings[i+1]&&candys[i]<=candys[i+1])
candys[i]=candys[i+1]+1;
}
int res=0;
for(int i=0;i<candys.length;i++)
res+=candys[i];
return res;
}
}
執行結果: