买卖股票的最佳时机 II Java (贪心算法)
題目
給定一個(gè)數(shù)組 prices ,其中 prices[i] 是一支給定股票第 i 天的價(jià)格。
設(shè)計(jì)一個(gè)算法來計(jì)算你所能獲取的最大利潤(rùn)。你可以盡可能地完成更多的交易(多次買賣一支股票)。
注意:你不能同時(shí)參與多筆交易(你必須在再次購(gòu)買前出售掉之前的股票)。
實(shí)例
示例 1:
輸入: prices = [7,1,5,3,6,4]
輸出: 7
解釋: 在第 2 天(股票價(jià)格 = 1)的時(shí)候買入,在第 3 天(股票價(jià)格 = 5)的時(shí)候賣出, 這筆交易所能獲得利潤(rùn) = 5-1 = 4 。
隨后,在第 4 天(股票價(jià)格 = 3)的時(shí)候買入,在第 5 天(股票價(jià)格 = 6)的時(shí)候賣出, 這筆交易所能獲得利潤(rùn) = 6-3 = 3 。
示例 2:
輸入: prices = [1,2,3,4,5]
輸出: 4
解釋: 在第 1 天(股票價(jià)格 = 1)的時(shí)候買入,在第 5 天 (股票價(jià)格 = 5)的時(shí)候賣出, 這筆交易所能獲得利潤(rùn) = 5-1 = 4 。
注意:你不能在第 1 天和第 2 天接連購(gòu)買股票,之后再將它們賣出。因?yàn)檫@樣屬于同時(shí)參與了多筆交易,你必須在再次購(gòu)買前出售掉之前的股票。
代碼
class Solution {public int maxProfit(int[] prices) {int profit = 0;for (int i = 0; i < prices.length - 1; i++) {if (prices[i] < prices[i + 1]) {//后一天的價(jià)格比前一天高,則賣出profit += prices[i + 1] - prices[i];}}return profit;} }算法思想
這個(gè)算法還是很簡(jiǎn)單的,(貪心算法),當(dāng)前價(jià)格,如果當(dāng)前價(jià)格i比i+1高,則不是買入點(diǎn),
則繼續(xù)判斷下一個(gè)位置。
如果當(dāng)前位置i的價(jià)格比i+1的價(jià)格低,則在當(dāng)前位置買入,知道i+n比i+n+1大時(shí),賣出。
繼續(xù)下一輪判斷。
說的簡(jiǎn)單一點(diǎn)就是:只要后項(xiàng)大于前項(xiàng),則累加到結(jié)果值中。
乾坤未定,你我皆是黑馬。
客官都看這了,點(diǎn)個(gè)贊唄!
總結(jié)
以上是生活随笔為你收集整理的买卖股票的最佳时机 II Java (贪心算法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GBase 8s 数据库监控(4)
- 下一篇: JavaWeb-过滤器Filter学习(