首页 > 其他分享 >LeetCode 121.买卖股票的最佳时机

LeetCode 121.买卖股票的最佳时机

时间:2023-08-15 21:03:15浏览次数:41  
标签:示例 int 121 最佳时机 prices 卖出 LeetCode dp 利润

1.题目:

给定一个数组 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。


2.代码:

class Solution {
    public int maxProfit(int[] prices) {
      int len = prices.length;
      int[][] dp = new int[len][2];
      dp[0][0]=-prices[0];//初始化
      dp[0][1]=0;
      for(int i=1; i<prices.length; i++){
          dp[i][0]=Math.max(dp[i-1][0],-prices[i]);//持有股票所有的现金 其实本质就是求需要最少前购买的股票
          dp[i][1]=Math.max(dp[i-1][1],dp[i-1][0]+prices[i]);//不持有股票所有的现金
      }
      return dp[len-1][1];
    }
}














标签:示例,int,121,最佳时机,prices,卖出,LeetCode,dp,利润
From: https://blog.51cto.com/u_15806469/7093093

相关文章

  • 【LeetCode 571. 给定数字的频率查询中位数】WITH RECURSIVE实现Tally的逆操作
    目录题目地址代码题目地址https://leetcode.cn/problems/find-median-given-frequency-of-numbers/description/代码WITHRECURSIVERecCTEAS(SELECTnum,frequency-1asremaining_frequencyFROMNumbersWHEREfrequency>0UNIONALLSELECTn......
  • Leetcode 206. 反转链表(Reverse linked list)
    题目链接给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]提示:链表中节点的数目范围是[0,5000]-5000<=Node.val<=5000思路迭代法:创建两个指针,分别指向当前节......
  • LeetCode 198.打家劫舍
    1.题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜......
  • LeetCode 213.打家劫舍II
    1.题目:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存......
  • [LeetCode] 2369. Check if There is a Valid Partition For The Array
    Youaregivena 0-indexed integerarray nums.Youhavetopartitionthearrayintooneormore contiguous subarrays.Wecallapartitionofthearray valid ifeachoftheobtainedsubarrayssatisfies one ofthefollowingconditions:Thesubarraycon......
  • LeetCode 139.单词拆分
    1.题目:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例1:输入:s="leetcode",wordDict=["leet","code"]输出:true解释:返回tr......
  • LeetCode 7023操作使得分最大
    7023.操作使得分最大题目描述:一个数字的质数分数为其质因数个数;给定一个长度为\(n\)的正整数数组nums和正整数k,可以进行k次如下操作:选择一个之前没有选择过的非空子数组subnums从subnums中选择一个质数分数最大的元素x,如果多个元素质数分数相同且最大,选择下标最小的一个将得......
  • LeetCode 279.完全平方数
    1.题目:给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 https://leetcode.cn/problems/perfect-squares/description/......
  • Leetcode No.53 Maximum Subarray
    参考资料:考点:子串&动态规划&[题干]Input:nums=[-2,1,-3,4,-1,2,1,-5,4]Output:6Explanation:Thesubarray[4,-1,2,1]hasthelargestsum6.1.心路历程这道题非常经典,蕴含的思想也是精巧无比。2.正解简单来说官解就是找到了题目中......
  • LeetCode 周赛上分之旅 #39 结合中心扩展的单调栈贪心问题
    ⭐️本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]和BaguTreePro知识星球提问。学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场LeetCode周赛的解题报告,一......