LeetCode第122题,难度简单。...给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。...设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii 著作权归领扣网络所有。...这样的场景其实就是每天都进行买卖,只要不亏,就肯定买。
序 本文主要研究一下leetcode之买卖股票的最佳时机 vvza62rkjixufoja2i2p.png 题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。...如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。...示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...prices[i] - min); min = Math.min(min, prices[i]); } return max; } } 小结 这里用第一天的价格作为最小值...doc 买卖股票的最佳时机
序 本文主要研究一下leetcode之买卖股票的最佳时机 题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。...如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。...[i] - min); min = Math.min(min, prices[i]); } return max; } } 小结 这里用第一天的价格作为最小值...,以0作为最大值,然后从第二天开始遍历,计算每天最大获利及股票的最小值,最后得出最大收益。...doc 买卖股票的最佳时机
int minprice = Integer.MAX_VALUE; // 令最大收益为 0 int maxprofit = 0; // 循环找出最小的价格并求最大收益...maxprofit = prices[i] - minprice; } } return maxprofit; } } leetcode...买卖股票的最佳时机 解法分析 首先设置最小价格为 Integer.MAX_VALUE,这样才能无论如何数组的第一个值都小于最小价格,才能完成下一步的赋值。同时初始化最大收益为 0....循环找出最小的价格过程中也计算着最大收益,最后返回最大收益。
# LeetCode-121-买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。...如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。...示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...示例2: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。...# 解题思路 方法一、线性遍历(DP思想): 当利润是负数时,最小数应该变化为当前值,当利润为正数时,max最大利润保存,最后返回最大利润即可 前i天的最大收益= max(前i-1天的最大收益,第i天的价格
题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。...示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...示例 2: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。...解法 对于价格列表中的每个元素,可以执行的操作有三种: 买入 卖出 不作操作 从是否持有股票来说分为两种状态: 持有股票 未持有股票 以变量 j 表示持有股票的状态,不妨以 0 表示未持有股票,1 表示持有...表示前一天持有股票,今天执行卖出操作,利润为前一天的利润加今天的卖出价格。所以 ? 取两者中的较大值。 同理,当状态为 1 时,有 ? ,其中 ?
题目信息 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票), 设计一个算法来计算你所能获取的最大利润。...股票的最大利润 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock 著作权归领扣网络所有...解题 类似题目: LeetCode 122. 买卖股票的最佳时机 II LeetCode 123. 买卖股票的最佳时机 III(动态规划) LeetCode 188....买卖股票的最佳时机 IV(动态规划) LeetCode 309. 最佳买卖股票时机含冷冻期(动态规划) LeetCode 714....买卖股票的最佳时机含手续费(DP) 对第i天卖出股票,记录前i天的最小价值low 第i天卖出的话,收益就是price[i] - low 记录所有天里的最大收益即为答案 class Solution {
题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。...注意你不能在买入股票前卖出股票。...示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...示例 2: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
一、思路 找出选择和状态 二、问题 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。...你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。...示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。...示例 2: 输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 没有交易完成, 所以最大利润为 0。
题目描述 解题思路 代码 复杂度分析 GitHub LeetCode 项目 题目描述 题目链接 给定一个数组 prices ,它的第 i 个元素 pricesi 表示一支给定股票第 i 天的价格。...你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。...示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...示例 2: 输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下,没有交易完成,所以最大利润为 0。...项目 项目 GitHub LeetCode 全解,欢迎大家 star、fork、merge,共同打造最全 LeetCode 题解!
题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。...注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。...- prices[2]) + (prices[2] - porces[1]) 可以发现,我们需要收集每天的正利润就可以,收集正利润的区间,就是股票买卖的区间,而我们只需要关注最终利润就可以了,不需要记录区间
题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。...设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。...示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...示例 2: 输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 没有交易完成, 所以最大利润为 0。...随着时间的推移,每天我们都可以选择出售股票与否。那么,假设在第 i 天,如果我们要在今天卖股票,那么我们能赚多少钱呢? 显然,如果我们真的在买卖股票,我们肯定会想:如果我是在历史最低点买的股票就好了!
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。...示例 2: 输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 没有交易完成, 所以最大利润为 0。...这不刚好又刷到这道题,买卖股票啥时候时机最好,这市场变化莫测,压根没这道题这么悠哉好吧。如下我就来讲讲这道题是如何实现股票的买卖最佳时机。 ...我们只要用一个变量来记录股票最低价格 minValue,这样我们就可以假设股票是在那天买进的。那么我们在第 i 天卖出股票所获得的利润为 prices[i] - minValue。...当 (prices[i]-minValue) > max时,说明买卖股票的最大值可以是当前i,即把(prices[i]-minValue) 赋值给max即可。
题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。...注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。 因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
money += curDiff; } return money; } }; 致谢 图片来源于「代码随想录」公众号,欢迎大家关注这位大佬的公号
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...示例 2: 输入: [1,2,3,4,5] 输出: 4 解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。...注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。 因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
力扣题目: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。...设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。...来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock 著作权归领扣网络所有。...暴力破解 使用两层循环嵌套,分别拿后一天的与当前的做差,取出最大的那个差值: func maxProfit(prices []int) int { n := len(prices) max
题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。...注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...示例 3: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 解法 参考:Leetcode 121....买卖股票的最佳时机 有如下递推关系式: ? ? 因为可以买卖多次,所以有: ? ,其中 ? 表示在现有利润基础上,买入新股票。
题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。...注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。...解题思路2:动态规划 考虑到「不能同时参与多笔交易」,因此每天交易结束后只可能存在手里有一支股票或者没有股票的状态。...定义状态 dp[i][0] 表示第 i 天交易完后手里没有股票的最大利润,dp[i][1] 表示第 i 天交易完后手里持有一支股票的最大利润(i从 0 开始)。
题目描述 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。...注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。...随后,在第 5 天 (股票价格 = 0) 的时候买入,在第 6 天 (股票价格 = 3) 的时候卖出, 这笔交易所能获得利润 = 3-0 = 3 。 解法 参考:Leetcode 123....买卖股票的最佳时机 III 因为 j 只有 0 和 1 两种状态,则有如下递推关系式: ? ?...dp 数组的初始化中,dp[0][1] 无意义,因为这里以买入股票作为开始一次交易,所以不存在 0 次交易,持有股票的情况。
领取专属 10元无门槛券
手把手带您无忧上云