題目
給定一個(gè)數(shù)組?prices
?,它的第?i
?個(gè)元素?prices[i]
?表示一支給定股票第?i
?天的價(jià)格。
你只能選擇?某一天?買入這只股票,并選擇在?未來的某一個(gè)不同的日子?賣出該股票。設(shè)計(jì)一個(gè)算法來計(jì)算你所能獲取的最大利潤(rùn)。
返回你可以從這筆交易中獲取的最大利潤(rùn)。如果你不能獲取任何利潤(rùn),返回?0
?。
示例 1:
輸入:[7,1,5,3,6,4] 輸出:5 解釋:在第 2 天(股票價(jià)格 = 1)的時(shí)候買入,在第 5 天(股票價(jià)格 = 6)的時(shí)候賣出,最大利潤(rùn) = 6-1 = 5 。 注意利潤(rùn)不能是 7-1 = 6, 因?yàn)橘u出價(jià)格需要大于買入價(jià)格;同時(shí),你不能在買入前賣出股票。
示例 2:
輸入:prices = [7,6,4,3,1] 輸出:0 解釋:在這種情況下, 沒有交易完成, 所以最大利潤(rùn)為 0。
提示:文章來源:http://www.zghlxwxcb.cn/news/detail-618654.html
1 <= prices.length <= 105
0 <= prices[i] <= 104
解答
源代碼
class Solution {
public int maxProfit(int[] prices) {
int minPrice = Integer.MAX_VALUE;
int maxProfit = 0;
for (int i = 0; i < prices.length; i++) {
if (prices[i] < minPrice) {
minPrice = prices[i];
} else if (prices[i] - minPrice > maxProfit) {
maxProfit = prices[i] - minPrice;
}
}
return maxProfit;
}
}
總結(jié)
盡量拒絕暴力破解,遍歷一次,不斷更新最低價(jià)和能夠獲得的最大利潤(rùn),返回最終的最大利潤(rùn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-618654.html
到了這里,關(guān)于【LeetCode】121.買賣股票的最佳時(shí)機(jī)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!