文章目录

  • 题目描述
  • 代码 & 思路
    • 初版代码
    • 更新啦~优化代码
    • 再次更新

题目描述

  • 讲道理,一眼dp

代码 & 思路

  • 时间复杂度O(n),不过可改进的地方还多,跑出来大概6ms。

初版代码

class Solution {public int maxProfit(int[] prices) {// 做啥:找一个i,j(j > i)且prices[j] > prices[i],使得 max = prices[j] - prices[i]// 用dp做吧int len = prices.length;if(len == 1){return 0;}// dp[i]代表当前值之后能遇到的最大值int[] dp = new int[len];dp[len-1] = 0;for(int i=len-2;i >= 0;i--){dp[i] = Math.max(prices[i+1],dp[i+1]);}int max = 0;for(int i=0;i<len-1;i++){max = Math.max(dp[i] - prices[i],max);}return max;}
}

更新啦~优化代码

  • 节约了空间,空间复杂度由 O(n) 变成了 O(1)
class Solution {public int maxProfit(int[] prices) {if(prices.length < 2) {return 0;}int len = prices.length;int max = prices[len - 1];int ans = 0;for(int i = len - 2; i >= 0; i--) {int nowProfit = max - prices[i];// ans 更新if(nowProfit > ans) {ans = nowProfit;}// min 更新if(prices[i] > max) {max = prices[i];} }return ans;}
}

再次更新

class Solution {public int maxProfit(int[] prices) {int max = prices[prices.length - 1];int res = 0;for(int i = prices.length - 2; i >= 0; i--) {max = Math.max(max, prices[i + 1]);res = Math.max(max - prices[i], res);}return res;}
}

【LeetCode笔记】121. 买卖股票的最佳时机 / 剑指 Offer 63. 股票的最大利润(Java、动态规划)相关推荐

  1. 【LeetCode】剑指 Offer 63. 股票的最大利润

    [LeetCode]剑指 Offer 63. 股票的最大利润 文章目录 [LeetCode]剑指 Offer 63. 股票的最大利润 package offer;public class Soluti ...

  2. leetcode剑指 Offer 63. 股票的最大利润(动态规划)

    假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候 ...

  3. leetcode:剑指 Offer 63. 股票的最大利润【记录前缀最小和 or 无脑线段树】

    分析 无脑线段树记录后面的最大值 然后前缀最小和记录前面的最小值 无脑线段树 from functools import reduceclass SegTree:'''通用线段树 by AK自动机支持 ...

  4. 【算法】剑指 Offer 63. 股票的最大利润

    1.概述 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释

  5. 剑指 Offer 63. 股票的最大利润(javascript)

    一.题目地址 https://leetcode-cn.com/problems/gu-piao-de-zui-da-li-run-lcof/ 二.具体代码 /*** @param {number[]} ...

  6. 《LeetCode力扣练习》剑指 Offer 10- II. 青蛙跳台阶问题 Java

    <LeetCode力扣练习>剑指 Offer 10- II. 青蛙跳台阶问题 Java 一.资源 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总 ...

  7. Leetcode——连续子数组的最大和(剑指offer 42)

    题目选择Leetcode--剑指offer 42 动态规划基础练习题,也就是最大连续子序列和 解题代码: class Solution { public:int maxSubArray(vector& ...

  8. 左神算法:判断 t1 树是否包含t2 树全部的拓扑结构(剑指 Offer 26. 树的子结构,Java版)

    本题来自左神<程序员代码面试指南>"判断 t1 树是否包含t2 树全部的拓扑结构"题目. 题目 剑指 Offer 26. 树的子结构 给定彼此独立的两棵树头节点分别为 ...

  9. 剑指 Offer(专项突击版)Java 持续更新....

    剑指 Offer(专项突击版) 刷题链接: https://leetcode-cn.com/problem-list/e8X3pBZi/?page=1 No.001 题目: 整数除法 1. 刷题链接: ...

最新文章

  1. python ssh模块_windows下python SSH的使用——paramiko模块
  2. git branch set-upstream master 分支名/master
  3. mysql匹配数据结构_MySQL索引背后的数据结构及原理
  4. 使用OpenCV进行多边形绘制和填充
  5. 在VS.NET 的项目中使用生成事件
  6. 日本码农为了萝莉,竟然在GitHub上做这种事,“警察,快来抓我啊!”
  7. 【英语学习】【Level 08】U03 My Choice L4 The coolest movie character
  8. Spark: Structured + hive(Jdbc方式)卡死
  9. 为什么做的报表领导不满意,如何提升报表的价值?
  10. 身份证号码中间显示*星号
  11. HTML 盒子模型( box-sizing: border-box)
  12. 做360度评估引发员工不满?
  13. 使用 OpenSSL 加密和解密文件
  14. 核与线程 什么叫四核八线程
  15. C++ OpenCV特征提取之KAZE检测
  16. Mark一个神奇的网站
  17. 招标采购腐败与欺诈行为有哪些?该如何预防?
  18. 「Pygame经典合集」​​​​​​终极 大招:让你玩儿到爽
  19. java 自定义json解析注解 复杂json解析 工具类
  20. 51单片机矩阵键盘C程序

热门文章

  1. 船员能力评估计算机软件系统,船舶动力电力训练系统操作水平综合评估算法研究...
  2. freemark循环map_freemarker中循环map根据key值得value 报错
  3. 串口打印怎么使用】_爱普生打印机怎么使用 爱普生打印机使用方法【详解】...
  4. 英语计算机房和操场怎么读,计算机房对我们学习帮助很大. the , in studies , computer , room , helps , lot , a , our , us...
  5. vc2017 linux printf,C/C++中自定义信息输出——printf与宏的配合使用
  6. python中str和input_python中eval()函数和input()函数用法解析
  7. 矩阵转置函数——指针自增的陷阱
  8. 图像处理与图像识别笔记(一)
  9. python 文件和目录 当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
  10. Linux进制查看工具:od、hexdump、xxd