日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2024/7/23 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode笔记】121. 买卖股票的最佳时机 / 剑指 Offer 63. 股票的最大利润(Java、动态规划) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 題目描述
  • 代碼 & 思路
      • 初版代碼
      • 更新啦~優化代碼
      • 再次更新

題目描述

  • 講道理,一眼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、动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。