1. 程式人生 > >【leetcode】135.(Hard)Candy

【leetcode】135.(Hard)Candy

解題思路:
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; } }

執行結果:
在這裡插入圖片描述