面試題63:股票的最大利潤

假設某股票的價格按照時間先后順序存儲在數(shù)組中,問買賣該股票一次可能獲得的最大利潤是多少?

  • 如一支股票在某段時間內(nèi)的價格為{9, 11, 8, 5, 7, 12, 16, 14}那么能在價格為5的時候購入并在價格為16時賣出,能獲得最大利潤11

轉(zhuǎn)換成求每個位置價格和之前的最小股價的最大差問題,遍歷每個位置,求出每個位置與之前位置的最大差,并記錄下最大差,每次循環(huán)還保證記錄下之前的最小值。

/**
     * 掃描數(shù)組一次,時間復雜度為O(n)
     * 遍歷數(shù)組,同時記錄當前數(shù)值和前面所有數(shù)值的最小值,計算并記錄最大差值
     * @param prices
     * @return
     */
    public int getMaxDiff(int[] prices) {
        if (prices == null || prices.length < 0){
            return 0;
        }
        //最大差值和前面的最小值
        int maxDiff = 0;
        int min = prices[0];
        for (int i=1;i<prices.length;i++){
            if (prices[i-1] < min) min = prices[i-1];
            int diff = prices[i]-min;
            if (maxDiff < diff) maxDiff = diff;
        }
       return maxDiff;
    }

    public static void main(String[] args) {
        int[] prices = {9, 11, 8, 5, 7, 12, 16, 14};
        MaxDiff maxDiff = new MaxDiff();
        System.out.println(maxDiff.getMaxDiff(prices));
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 題目:假設把某股票的價格按照時間先后順序存儲在數(shù)組中,請問買賣該股票一次可能獲得的最大利潤是多少?例如,一只股票在...
    孫強Jimmy閱讀 838評論 0 0
  • 題目描述 假設把某股票的價格按照時間先后順序存儲在數(shù)組中,請問買賣該股票一次可能獲得的最大利潤是多少? 例如,一只...
    cb_guo閱讀 268評論 0 0
  • 近來發(fā)現(xiàn)身邊的同事、同學好多都在計劃著或者已經(jīng)實施了二胎計劃,也有不少朋友問我,啥時候生二胎呀?每每這個時候,我都...
    五月睿陽閱讀 379評論 1 0
  • 太湖 大樹 長椅 背影… 一、為你寫詩 兩天換一個城市 向來擦肩而過 來去匆忙 今晚難得湖邊散步 同事幫忙留...
    呆小樣閱讀 371評論 1 2
  • ServletConfig ServletConfig:表示servlet的配置信息,一個servlet對象對應一...
    拾花為柴焚詩作薪閱讀 129評論 0 0

友情鏈接更多精彩內(nèi)容