题目地址:Best Time to Buy and Sell Stock - LeetCode
Say you have an array for which the ith element is the price of a given stock on day i.
If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.
Note that you cannot sell a stock before you buy one.
Example 1:
Input: [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
Not 7-1 = 6, as selling price needs to be larger than buying price.
Example 2:
Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.
这道题目遍历一遍即可。
Python解法如下:
class Solution:
def maxProfit(self, prices: List[int]) -> int:
maxprofit=0
minprice=-1
for i in prices:
if minprice==-1:
minprice=i
elif i<minprice:
minprice=i
elif i-minprice>maxprofit:
maxprofit=i-minprice
return maxprofit
Java解法如下:
public 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;
}
}
C++解法如下:
class Solution {
public:
int maxProfit(vector<int> &prices) {
int maxPro = 0;
int minPrice = INT_MAX;
for(int i = 0; i < prices.size(); i++){
minPrice = min(minPrice, prices[i]);
maxPro = max(maxPro, prices[i] - minPrice);
}
return maxPro;
}
};

这道LeetCode问题要求在仅允许一次交易的情况下找到最大利润。给定一个数组,其中每个元素表示每天股票的价格,你需要设计算法来最大化收益。例如,当价格为[7, 1, 5, 3, 6, 4]时,最佳策略是在第1天买入,在第3天卖出,获得最大利润5。本文提供了Python、Java和C++的解法。"
120835956,10186093,2021极客大挑战:Web安全实战解析,"['php', 'web安全', '安全漏洞', 'java', '网络安全']
352

被折叠的 条评论
为什么被折叠?



