Étant donné un tableau d'entiers, le i-ème élément représente le cours de l'action le i-ème jour.
Concevez un algorithme pour calculer le profit maximum. Sous les contraintes suivantes, vous pouvez effectuer autant de transactions que possible (acheter et vendre une action plusieurs fois):
Vous ne pouvez pas participer à plusieurs transactions en même temps (vous devez vendre l'action précédente avant d'acheter à nouveau).
Après avoir vendu le stock, vous ne pouvez pas acheter le stock le jour suivant (c'est-à-dire que la période de gel est de 1 jour).
Exemple:
Entrée: [1,2,3,0,2]
Sortie: 3
Explication: L'état de la transaction correspondante est: [Achat, Vente, Gel de la période, Achat, Vente]
class Solution {
public int maxProfit(int[] prices) {
if(prices.length==0||prices==null){
return 0;
}
int pr_0=0;
int pr_1=Integer.MIN_VALUE;
int pr_2_0=0;
for(int i=0;i<prices.length;i++){
int temp = pr_0;
pr_0=Math.max(pr_0,pr_1+prices[i]);
pr_1=Math.max(pr_1,pr_2_0-prices[i]);
pr_2_0=temp;
}
return pr_0;
}
}