题目 给定一个数组, 表示第i天的股票价格, 最多只能进行一次买卖, 如何获取最大利润. inp t: [7,1,5,3,6,4] o tp t: 5 inp t: [7,6,4,3,1] o tp t: 0 思路1 循环 时间复杂度o(n²) int maxprofit(vectorint& prices) { int n = (int)prices.size; int res = 0; for (int i = 1; i  n; i) { for (int j = 0; j  i; j) { res = max(prices[i] - prices[j], res); } } ret rn res; } 思路2 在遍历时, 记录最小值, 然后遍历时的值减去最小值就可能得出最大值. 时间复杂度o(n) int maxprofit(vectorint& prices) { int n = (int)prices.size; if (n == 0) ret rn 0; int res = 0, minp = prices[0]; for (int i = 1; i  n; i) { int tmp = prices[i]; res = max(tmp - minp, res); if (tmp  minp) { minp = tmp; } } ret rn res; } 总结 将题目转换为数学问题.