1、
class Solution { public int maxProfit(int[] prices) { int len = prices.length; if(len<=1){ return 0; } int min = prices[0]; int max = 0; for(int i=1;i<len;++i){ if(prices[i]-min>max){ max = prices[i]-min; } if(prices[i]<min){ min = prices[i]; } } return max; } }
2、
class Solution { public int maxProfit(int[] prices) { int maxprofit = 0; for (int i = 1; i < prices.length; i++) { if (prices[i] > prices[i - 1]) maxprofit += prices[i] - prices[i - 1]; } return maxprofit; } }
3、
class Solution { public int maxProfit(int[] prices) { int len = prices.length; int min; int max; int maxProfile = 0; int maxProfile1; int maxProfile2; List<Integer> list1 = new ArrayList<>(); List<Integer> list2 = new ArrayList<>(); List<Integer> profile1 = new ArrayList<>(); int i=0; while(i<len-1){ while(i<len-1&&prices[i]>=prices[i+1]) ++i; min = prices[i]; while(i<len-1&&prices[i]<=prices[i+1]) ++i; max = prices[i]; list1.add(min); list2.add(max); } int size = list1.size(); if(size==0) { }else if(size==1){ return list2.get(0) - list1.get(0); }else{ min = list1.get(0); maxProfile1 = list2.get(0)-min; for(i=0;i<size-1;++i){ if(i>0){ min = Math.min(list1.get(i),min); maxProfile1 = Math.max(list2.get(i)-min,maxProfile1); } profile1.add(maxProfile1); } max = list2.get(size-1); maxProfile2 = max-list1.get(size-1); for(i=size-1;i>0;--i){ if(i<size-1){ max = Math.max(max,list2.get(i)); maxProfile2 = Math.max(max-list1.get(i),maxProfile2); } maxProfile = Math.max(maxProfile, profile1.get(i-1)+maxProfile2); } } return maxProfile; } }