Leecode刷题之旅-C语言/python-121买卖股票的最佳时机
Posted 李逍遥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leecode刷题之旅-C语言/python-121买卖股票的最佳时机相关的知识,希望对你有一定的参考价值。
/* * @lc app=leetcode.cn id=121 lang=c * * [121] 买卖股票的最佳时机 * * https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/description/ * * algorithms * Easy (48.50%) * Total Accepted: 32.5K * Total Submissions: 66.9K * Testcase Example: ‘[7,1,5,3,6,4]‘ * * 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 * * 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 * * 注意你不能在买入股票前卖出股票。 * * 示例 1: * * 输入: [7,1,5,3,6,4] * 输出: 5 * 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 * ? 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 * * * 示例 2: * * 输入: [7,6,4,3,1] * 输出: 0 * 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 * * */ int maxProfit(int* prices, int pricesSize) { int maxpro=0,temp=0; int i,j; for(i=0;i<pricesSize;i++){ for(j=i+1;j<pricesSize;j++){ if(prices[j]>prices[i]){ temp=prices[j]-prices[i]; if(temp>=maxpro){ maxpro=temp; } } } } return maxpro; }
思路很好理解的。双下标,第一个固定,然后第二个在之后不断移动,如果比第一个下标指定的值大的话,就相减。
设一个temp等于差值,与上一次的maxpro进行比较,如果大的话,maxpro等于temp。
-----------------------------------------------------------------------------------------------------------------
python:
# # @lc app=leetcode.cn id=121 lang=python3 # # [121] 买卖股票的最佳时机 # # https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/description/ # # algorithms # Easy (48.50%) # Total Accepted: 32.5K # Total Submissions: 66.9K # Testcase Example: ‘[7,1,5,3,6,4]‘ # # 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 # # 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 # # 注意你不能在买入股票前卖出股票。 # # 示例 1: # # 输入: [7,1,5,3,6,4] # 输出: 5 # 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 # ? 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 # # # 示例 2: # # 输入: [7,6,4,3,1] # 输出: 0 # 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 # # # class Solution: def maxProfit(self, prices: List[int]) -> int: if len(prices) < 2: return 0 profit = 0 minimum = prices[0] for i in prices: minimum = min(i, minimum) profit = max(i - minimum, profit) return profit
python这里用函数很方便,在价格最低那天买入,价格最高那天卖出,就会获得最大利润。(当然不能提前买)
以上是关于Leecode刷题之旅-C语言/python-121买卖股票的最佳时机的主要内容,如果未能解决你的问题,请参考以下文章
Leecode刷题之旅-C语言/python-118杨辉三角
Leecode刷题之旅-C语言/python-141环形链表
Leecode刷题之旅-C语言/python-121买卖股票的最佳时机
Leecode刷题之旅-C语言/python-26.删除数组中的重复项