剑指offer_股票的最大利润

题目描述

可以有一次买入和一次卖出,买入必须在前。求最大收益

 1 class Solution {
 2     public int maxProfit(int[] prices) {
 3         int max = 0;
 4         for(int i=0;i<prices.length-1;i++){
 5             for(int j=i+1;j<prices.length;j++){
 6                 if(prices[j]-prices[i]>max) max = prices[j]-prices[i];
 7             }
 8         }
 9         
10         return max;
11     }
12 }

 

方法二:

使用贪心策略,假设第 i 轮进行卖出操作,买入操作价格应该在 i 之前并且价格最低。

 1 class Solution {
 2     public int maxProfit(int[] prices) {
 3         if(prices==null||prices.length==0) return 0;
 4         int min = prices[0];
 5         int max = 0;
 6         for(int i = 1; i<prices.length;i++){
 7             min = Math.min(min,prices[i]);
 8             max = Math.max(max,prices[i]-min);
 9         }
10         return max;
11     }
12 }

 

posted @ 2019-09-18 20:44  chyblogs  阅读(143)  评论(0)    收藏  举报