[LeetCode][初級演算法][動態規劃]買賣股票的最佳時機
給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。
注意你不能在買入股票前賣出股票。
這道題參考了網上的解答,採用貪心法,遍歷陣列時一邊計算最大利潤,一邊儲存最低價格以期之後能得到更高的利潤。
所以只需要O(n)即可。
int maxProfit(int* prices, int pricesSize) { int lowest, max_profit; lowest = 99999; max_profit = 0; int i=0; for(i=0;i<pricesSize;i++){ if(prices[i]<lowest) lowest = prices[i]; if(prices[i]-lowest > max_profit) max_profit = prices[i]-lowest; } return max_profit; }
相關推薦
[LeetCode][初級演算法][動態規劃]買賣股票的最佳時機
給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出股票。 這道題參考了網上的解答,採用貪心法,遍歷陣列時一邊計算最大利
LeetCode初級演算法——陣列(2)買賣股票的最佳時機 II
買賣股票的最佳時機 II 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 示例 1
LeetCode--初級演算法--陣列篇--買賣股票的最佳時機 II
題目 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 示例 1: 輸入: [7,1,5,3,6
[leetcode]初級演算法——動態規劃
爬樓梯You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct w
[Leetcode 動態規劃]買賣股票
轉自http://liangjiabin.com/blog/2015/04/leetcode-best-time-to-buy-and-sell-stock.html Best Time to Buy and Sell Stock I Description: S
買賣股票最佳時機(I II III IV 冷凍期,手續費)
共6個問題: 買賣股票最佳時機 買賣股票最佳時機 II 買賣股票最佳時機 III 買賣股票最佳時機 IV 最佳買賣股票時機含冷凍期 買賣股票最佳時機含手續費 分析: 只允許一次交易的最大收益(一次買進賣出)動態規劃: dp[i] = max(dp[i-1],
Leetcode題解之動態規劃(2) 買賣股票的最佳時機
題目:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/23/dynamic-programming/55/ 題目描述: 給定一個數組,它的第 i 個元素是一支給定股票第
Leetcode初級演算法 買賣股票的最佳時機 Python
問題描述: 演算法思路: 一個很自然的想法是找到陣列的最大值和最小值,相減得到最大差值。但因為是買賣股票,售出必須發生在買入之後,所以利潤對應的買入買出價不一定是陣列的極值。舉例說明:假設陣列的極值為max,min,最佳的買入賣出價格為buy,sell,如果這幾個元素的相對順序為:ma
C++ Leetcode初級演算法之動態規劃篇
1.爬樓梯 假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是一個正整數。 示例 1: 輸入: 2 輸出: 2 解釋: 有兩種方法可以爬到樓頂。 1.1 階 + 1 階 2.2 階 示
Leetcode初級演算法 打家劫舍(動態規劃)(Python實現)
問題描述: 演算法思想: 該問題的內在邏輯結構依然是動態規劃裡的經典結構。最關鍵的是推出狀態轉移方程,當前規模的對應解法由更低規模的解法,彷彿拾級而上,站在前人的肩膀上不斷攀登。 實際操作起來,比較實用的方法如下:固定一個比較小的規模n, 進行思維實驗。 例子:
Leetcode刷題筆記python---買賣股票的最佳時機
買賣股票的最佳時機 題目 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出股票。 示例 1: 輸入: [7,1,5,3,6,4
[LeetCode]動態規劃中股票問題的通用解法
動態規劃中股票問題的通用解法 有一類動態規劃的問題是給定一個股票價格序列,然後計算買賣股票所能獲得的最大收益,這類問題通常有很多變種,例如只允許交易一次,允許交易多次或者增收交易稅等。即問題的最大收益通常由交易的時間和允許的最大交易次數(每次交易指一次買與一次
leetcode:買賣股票最佳時期(貪心java)
給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 示例 1: 輸入: [7,1,5,3,6,4] 輸出: 7 解
leetcode刷題記錄(買賣股票的最佳時機系列問題)
開始逐步拾起C++,故以後的刷題,全用python和C++兩種語言實現。 一、買賣股票的最佳時機 I 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。 注
【leetcode】Python實現-122.買賣股票的最佳時機II
122.買賣股票的最佳時機II 描述 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在再次
【leetcode】Python實現-121.買賣股票的最佳時機
121.買賣股票的最佳時機 描述 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出股票。 示例
LeetCode-探索-初級-陣列-買股票最佳時機2-java
買賣股票的最佳時機 II 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在
java演算法題:買賣股票的最佳時機 II
題目: 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 示例 1: 輸入: [7,1,5,3,
初級算法-2. 買賣股票的最佳時機
price clas 多次 color 輸入 股票 code 買賣 最大利潤 題目描述: 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。 你可以盡可能地完成更多的交易(多次買賣一支股票)。 註意:你不能同時參
LeetCode初級演算法
目錄 1.陣列 2.字串 3.連結串列 4.樹 5.排序和搜尋 6.動態規劃 7.設計問題 8.數學 9.其他 1.陣列 1.1 給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列