首页
学习
活动
专区
圈层
工具
发布

股票的最大利润

大家好,我是吴师兄,不啰嗦,直接开始今天的算法学习,冲冲冲。 一、题目描述 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?...示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...0 if( prices.length < 2 ) return 0; // 设置 dp 数组,用来存放每天的最大利润 // dp[i] 表示以 prices...[i] 为结尾的最大利润 // dp[0] 表示以 prices[0] 为结尾的最大利润 // dp[1] 表示以 prices[1] 为结尾的最大利润...int sell = prices[i]; // 如果在这一天卖出去,那么利润就是当天的股票价格减去之前的购买价格

79230
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    golang刷leetcode 技巧(39)股票的最大利润

    假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?...示例 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。...121 题相同:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 解题思路: 1,这个题目主要还是建模和拆解 2,最大利润是什么...当前价格和最低价格差的最大值 3,所以需要记录两个变量。

    39930

    股票的最大利润

    一、题目 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?...二、示例 2.1> 示例 1: 【输入】 [7,1,5,3,6,4] 【输出】 5 【解释】 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1...既然要获得最大的利润,那么一定是在某个有效的时间区间内购买的股票价格最低,而卖出的股票价格最高。...那么,当我们遍历数组prices的时候,只要找到了一个价格低点min时,它后面所有的股票价格时间都是晚于它的,那么就可以通过计算每个价格与价格低点的差值,然后将利润最大的暂时保存在result变量中。...直到数组prices数组中所有的元素都被遍历一遍之后,result变量的值,就是只买卖一次股票,可以获得的最大利润。

    31420

    LeetCode-面试题63-股票的最大利润

    # LeetCode-面试题63-股票的最大利润 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?...示例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。...限制: 0 <= 数组长度 <= 10^5 # 解题思路 始终记录当前位置前的最小数字,遇到更小的就更新min,之后看当前的最大利润和存储的最大利润谁更大 # Java代码 class Solution

    52410

    力扣每日一刷(2023.9.18)

    你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。...他要的是最大利润, 利润就是我们所获得的现金, 而我们所获得的现金就是买入后自己钱包所剩的现金 + 卖出后我们获得的现金。...设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

    24610

    买卖股票的最佳时机 II

    给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。...你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大 利润 。...示例 1: 输入:prices = [7,1,5,3,6,4] 输出:7 解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 -...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。 总利润为 4 + 3 = 7 。...示例 2: 输入:prices = [1,2,3,4,5] 输出:4 解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 -

    40220

    买卖股票的最佳时机 II 算法解析

    一、题目 1、算法题目 “给定一个数组,表示股票每天的价格,求得能获得的最大利润。” 题目链接: 来源:力扣(LeetCode) 链接: 122....在每一天,你可能会决定购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以购买它,然后在 同一天 出售。 返回 你能获得的 最大 利润 。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。...定义dp[i][0]表示第i天交易完成后的最大利润,dp[i][1]表示第i天交易完成后的最大利润,dp[i][j]表示到下标为i的这一天,持股状态为j时,手上拥有的最大现金数。

    31020

    LeetCode122(买卖股票最佳时机II)

    ) 难度:中等 给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格。...在每一天,你可能会决定购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以购买它,然后在 同一天 出售。 返回 你能获得的 最大 利润 。...思路 这里采用贪心算法: 这里等同于每天买卖股票,实现最大利润。 只需要我们每天收集整理正利润即可,收集正利润的区间就是股票买卖点区间,而我们只需要关注最终利润,不需要记录区间。...那么只收集正利润是贪心算法所“贪”的地方。...局部最优:收集每天正利润 全局最优:求最大利润 def maxProfit(self, prices: List[int]) -> int: profit = 0 for i in range

    26710

    买卖股票的最佳时机 II

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。...注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。 因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。...示例 3: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

    30620

    买卖股票的最佳时机 II

    1 题目描述 买卖股票的最佳时机 II 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。...你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大 利润 。...总利润为 4 。 示例 3: 输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0 。...当前只有买股票或者卖股票的操作 想获得利润至少要两天为一个交易单元。 这道题目可能我们只会想,选一个低的买入,在选个高的卖,在选一个低的买入…循环反复。...局部最优:收集每天的正利润,全局最优:求得最大利润。 局部最优可以推出全局最优,找不出反例,试—试贪心!

    60340

    动态规划,一举歼灭“股票买卖的最佳时机”问题

    i天持有股票的最大利润,截止第i天交易次数为k。...买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。...买卖股票的最佳时机 III 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。...最佳买卖股票时机含冷冻期 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。...如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。

    64930

    买卖股票的最佳时机 II

    题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。...注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。 因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。...示例 3: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 解法 参考:Leetcode 121.

    57620

    买股票的最佳时机 II 解读

    题目 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。...你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大 利润 。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。 总利润为 4 + 3 = 7 。...总利润为 4 。 示例3 输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0 。...它通过简单的遍历股票价格数组,找到所有正收益的交易并将它们累加起来,得到最大总收益。这个算法在理解和实现上相对简单,适用于解决多种股票买卖问题。

    28710

    力扣经典150题第八题:买卖股票最佳时机二

    简介 本篇博客将讨论力扣经典150题中的买卖股票的最佳时机 II 问题。给定一个整数数组 prices,其中 prices[i] 表示某支股票第 i 天的价格,我们需要设计一个算法来计算最大利润。...问题描述 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。...你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大 利润 。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。 总利润为 4 + 3 = 7 。...解题思路 方法一:贪心算法 利用贪心算法,只要后一天的价格比前一天高,就将差值累加到最大利润中。 遍历价格数组,如果后一天价格比前一天高,将差值累加到最大利润中。 4.

    12710

    买卖股票的最佳时机 II

    题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。...注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。 因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。...示例 3: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

    36610

    golang刷leetcode 技巧(65)买卖股票的最佳时机(I,II)

    买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。...示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。 因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。

    42710
    领券