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 (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.
思路1:
在坐标系中按顺序把这些元素数值画成折线图会好理解一些。需要找出各个最大值和最小值的组合,最小值必须在最大值前面。然后比较各个组合的差值,最大的差值为结果。
Solution1:
public class Solution {
public int maxProfit(int[] prices) {
if (prices == null || prices.length == 0 || prices.length == 1) {
return 0;
}int min = prices[0];
int max = prices[0];
int maxPos = 0;
int result = 0;
for (int i = 1;
i < prices.length;
i++) {
if (min > prices[i]) {
if (i > maxPos) {
max = prices[i];
maxPos = i;
}
min = prices[i];
}
if (max < prices[i]) {
max = prices[i];
maxPos = i;
if (result < max - min) result = max - min;
}
}return result;
}
}
【Leetcode: Best Time to Buy and Sell Stock】
思路2:遍历卖出时间,寻找卖出时间之前买入价格为最少的值,并想减,取得到的结果中最大的数。
Solution2:
public int maxProfit(int[] prices) {
if (prices == null || prices.length == 0 || prices.length == 1) {
return 0;
}int result = 0;
int min = Integer.MAX_VALUE;
for (int price : prices) {
min = min > price ? price : min;
result = result > (price - min) ? result : price - min;
}return result;
}
推荐阅读
- 数据结构与算法|【算法】力扣第 266场周赛
- leetcode|今天开始记录自己的力扣之路
- Python|Python 每日一练 二分查找 搜索旋转排序数组 详解
- 【LeetCode】28.实现strstr() (KMP超详细讲解,sunday解法等五种方法,java实现)
- LeetCode-35-搜索插入位置-C语言
- leetcode python28.实现strStr()35. 搜索插入位置
- Leetcode Permutation I & II
- python|leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
- LeetCode 28 Implement strStr() (C,C++,Java,Python)
- Python|Python Leetcode(665.非递减数列)