layout: post
category: leetcode
title: 121. Best Time to Buy and Sell Stock
tags: Array
---
## Title
[the problem link](

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.

Example 1:

	Input: [7, 1, 5, 3, 6, 4]
	Output: 5

max. difference = 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

In this case, no transaction is done, i.e. max profit = 0.

题目大意:给一个数组,表示每天的物品价格,你要做的就是选一天买这个物品,再之后找一天卖这个物品,计算这个最大利润

一定要注意这个解题思想啊

## Solution
```c++
//cpp:
class Solution {
public:
	int maxProfit(vector<int>& prices) {
		int minprice = INT_MAX;
		int maxprice = 0;
		for (int i = 0; i < prices.size(); i++) {
			if (prices[i] <= minprice) {
				minprice = prices[i];
			}
			else if (prices[i] - minprice >= maxprice) {
				maxprice = prices[i] - minprice;
			}
		}
		return maxprice;
	}
};
```
