LeetCode上的各種股票最大收益

LeetCode上的各種股票最大收益

對于力扣平臺上的股票類型的題目:

  • 121 買賣股票的最佳時機

  • 122 買賣股票的最佳時機 II

  • 123 買賣股票的最佳時機 III

  • 124 買賣股票的最佳時機 IV

  • 309 最佳買賣股票時機含冷凍期

  • 714 買賣股票的最佳時機含手續費

  • 劍指 Offer 63. 股票的最大利潤

關鍵是要仔細分析題意,將每天結束后可能存在的狀態列出來,并考慮當天與前一天的可能存在的狀態轉移的關系。另外要注意初始化空間復雜度的優化

121. 買賣股票的最佳時機

dp數組含義

本題在某一天共可能有兩種狀態:

  • 持有股票
  • 不持有股票

我們構造的 dp 數組的規模為 2×n2\times n2×n,在 C++ 中,即為:vector<<vevtor<int>> dp(prices.size(), vector<int> (2, 0));

  • dp[i][0]dp[i][0]dp[i][0] 表示在第 iii結束后,在持有股票的狀態下的最大收益
  • dp[i][1]dp[i][1]dp[i][1] 表示在第 iii結束后,在不持有股票的狀態下的最大收益

遞推公式

  • 對于第 iii 天持有股票時的收益,即 dp[i][0]dp[i][0]dp[i][0],可能由以下情況推導而來:

    • i?1i-1i?1 天是也是持有股票的,即當日未進行任何操作:dp[i?1][0]dp[i-1][0]dp[i?1][0]

    • i?1i-1i?1 天是未持有股票的,即當日購買了股票,由于我們只能進行一次股票買賣操作,因此在購買股票之前的 dp[i?1][1]dp[i-1][1]dp[i?1][1] 一定是 0,因此應當減去當日股票價格:0?prices[i]0-prices[i]0?prices[i]

    應當取最大值,從而 dp[i][0]=max(dp[i?1][0],?prices[i])dp[i][0]=max(dp[i-1][0],-prices[i])dp[i][0]=max(dp[i?1][0],?prices[i])

  • 對于第 iii 天未持有股票時的收益,即 dp[i][1]dp[i][1]dp[i][1],可能由以下情況推導而來:

    • i?1i-1i?1 天是是持有股票的,即當日將股票賣出,應當 dp[i?1][0]dp[i-1][0]dp[i?1][0] 加上當日股票價格:dp[i?1][0]+prices[i]dp[i-1][0]+prices[i]dp[i?1][0]+prices[i]
    • i?1i-1i?1 天是未持有股票的,即當日無操作:prices[i?1][1]prices[i-1][1]prices[i?1][1]

    應當取最大值,從而 dp[i][1]=max(dp[i?1][1],dp[i?1][0]+prices[i])dp[i][1]=max(dp[i-1][1],dp[i-1][0]+prices[i])dp[i][1]=max(dp[i?1][1],dp[i?1][0]+prices[i])

初始化

dp 數組中所有項需在 dp[0][0]dp[0][0]dp[0][0]dp[0][1]dp[0][1]dp[0][1] 確定的情況下得到。

  • dp[0][0]dp[0][0]dp[0][0] 表示第一天持有股票,即第一天購入,應為 ?prices[0]-prices[0]?prices[0]
  • dp[0][1]dp[0][1]dp[0][1] 表示第一天未持有股票,應為 0

遍歷順序

從前向后

代碼

class Solution {
public:int maxProfit(vector<int>& prices) {int lens = prices.size();vector<vector<int>> dp(lens, vector<int> (2));dp[0][0] = -prices[0], dp[0][1] = 0;for (int i=1; i<lens; ++i) {dp[i][0] = max(dp[i-1][0], -prices[i]);dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i]);}return dp[lens-1][1];}
};

空間優化

很明顯,第 iii 天的情況只依賴于前一天的情況,而與再前面的情況沒有關系,因此,我們沒有必要維護一整個 dp 數組,而是維護常數變量即可,優化后:

class Solution {
public:int maxProfit(vector<int>& prices) {int lens = prices.size();vector<vector<int>> dp(2, vector<int> (2));dp[0][0] = -prices[0], dp[0][1] = 0;for (int i=1; i<lens; ++i) {dp[1][0] = max(dp[0][0], -prices[i]);dp[1][1] = max(dp[0][1], dp[0][0] + prices[i]);dp[0] = dp[1];}return dp[1][1];}
};

另一種做法

class Solution {
public:int maxProfit(vector<int>& prices) {int ans = 0, prevMin = INT_MAX;for (int n: prices) {ans = max(ans, n - prevMin);prevMin = min(prevMin, n);}return ans;}
};

122. 買賣股票的最佳時機 II

本題與121 題的唯一區別在于可以多次買賣股票,但要注意同時只能持有一只股票

dp數組含義

  • dp[i][0]dp[i][0]dp[i][0] 表示在第 iii 天結束后,持有股票時的最大收益
  • dp[i][1]dp[i][1]dp[i][1] 表示在第 iii 天結束后,不持有股票時的最大收益

遞推公式

注意由于這里與上一題的唯一區別在于允許多次股票買賣,因此遞推公式與上面的四種情況基本相同,唯一一點在于由于我們可以進行多次買賣,所以在某次購買股票之前的未持有股票的收益不一定是 0 了(我們可能在這次操作之前已經通過幾次操作收獲了一些利潤)。

即對于 dp[i][0]dp[i][0]dp[i][0] 在前一日不持有股票的情況從 0?prices[i]0-prices[i]0?prices[i] 變為了 dp[i?1][1]?prices[i]dp[i-1][1]-prices[i]dp[i?1][1]?prices[i],從而 dp[i][0]=max(dp[i?1][0],dp[i?1][1]?prices[i])dp[i][0]=max(dp[i-1][0],dp[i-1][1]-prices[i])dp[i][0]=max(dp[i?1][0],dp[i?1][1]?prices[i])

初始化遍歷順序與前題類似。

代碼

class Solution {
public:int maxProfit(vector<int>& prices) {int lens = prices.size();vector<vector<int>> dp(lens, vector<int> (2));dp[0][0] = -prices[0], dp[0][1] = 0;for (int i=1; i<lens; ++i) {dp[i][0] = max(dp[i-1][0], dp[i-1][1] - prices[i]);dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i]);}return dp[lens-1][1];}
};

注意代碼中的唯一區別在于:

dp[i][0] = max(dp[i-1][0], dp[i-1][1] - prices[i]);

原因上面已經解釋過。

空間優化的實現與上面也類似,這里就不貼了。

另一種寫法

本題有另一種做法,由于我們可以進行無限次交易且當日即可以買入又可以賣出,所以考慮:

[7, 1, 5, 6] 第二天買入,第四天賣出,收益最大(6-1),所以一般人可能會想,怎么判斷不是第三天就賣出了呢? 這里就把問題復雜化了,根據題目的意思,當天賣出以后,當天還可以買入,所以其實可以第三天賣出,第三天買入,第四天又賣出((5-1)+ (6-5) === 6 - 1)。所以算法可以直接簡化為只要今天比昨天大,就賣出

class Solution {
public:int maxProfit(vector<int>& prices) {int ans = 0;for (int i=1; i<prices.size(); ++i) {int profit = prices[i] - prices[i-1];ans = max(ans, ans + profit);}return ans;}
};

123. 買賣股票的最佳時機 III

本題相較于前面兩題要復雜不少,關鍵是最多兩次交易,即有可能可以是 0,1,2 次交易,我們需要列舉處理的情況多了不少。

dp數組的定義

本題中,我們一共要考慮每一天的五種狀態:

  • 尚未進行操作
  • 第一次買入后
  • 第一次賣出后
  • 第二次買入后
  • 第二次賣出后

注意我們這里要強調各個狀態是 買入/賣出 后 ,即不一定是當日買入/賣出,可能是 i?1i-1i?1i?2i-2i?2 …日進行的操作,都歸為該狀態。并且,注意到,這些狀態是有序的,即一定是一次經歷到的。

由此,我們 dp 數組的含義為:dp[i][j]dp[i][j]dp[i][j] 表示,第 iii 天處于狀態 jjj 時的最大收益。

遞推公式

  • 對于第 iii 日結束后。處于第一次買入后狀態,即 dp[i][1]dp[i][1]dp[i][1],可能由以下情況推導而來:

    • 前面已經買入,當日未進行操作:dp[i?1][1]dp[i-1][1]dp[i?1][1]
    • 當日買入:dp[i?1][0]?prices[i]dp[i-1][0]-prices[i]dp[i?1][0]?prices[i]

    取最大值,則有:dp[i][1]=max(dp[i?1][1],dp[i?1][0]?prices[i])dp[i][1]=max(dp[i-1][1],dp[i-1][0]-prices[i])dp[i][1]=max(dp[i?1][1],dp[i?1][0]?prices[i])

  • 對于第 iii 日處于第一次賣出后,即 dp[i][2]dp[i][2]dp[i][2],可能由以下情況推導而來:

    • 前面已經賣出,當日未進行任何操作:dp[i?1][2]dp[i-1][2]dp[i?1][2]
    • 當日賣出:dp[i?1][1]+prices[i]dp[i-1][1]+prices[i]dp[i?1][1]+prices[i]

    則:dp[i][2]=max(dp[i?1][2],dp[i?1][1]+prices[i])dp[i][2]=max(dp[i-1][2],dp[i-1][1]+prices[i])dp[i][2]=max(dp[i?1][2],dp[i?1][1]+prices[i])

  • 同理,dp[i][3]=max(dp[i?1][3],dp[i?1][2]?prices[i])dp[i][3]=max(dp[i-1][3],dp[i-1][2]-prices[i])dp[i][3]=max(dp[i?1][3],dp[i?1][2]?prices[i])

  • 同理,dp[i][4]=max(dp[i?1][4],dp[i?1][3]+prices[i])dp[i][4]=max(dp[i-1][4],dp[i-1][3]+prices[i])dp[i][4]=max(dp[i?1][4],dp[i?1][3]+prices[i])

代碼

class Solution {
public:int maxProfit(vector<int>& prices) {int lens = prices.size();vector<vector<int>> dp(lens, vector<int> (5));dp[0][1] = -prices[0], dp[0][3] = -prices[0];for (int i=1; i<lens; ++i) {dp[i][0] = dp[i-1][0];dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i]);dp[i][2] = max(dp[i-1][2], dp[i-1][1] + prices[i]);dp[i][3] = max(dp[i-1][3], dp[i-1][2] - prices[i]);dp[i][4] = max(dp[i-1][4], dp[i-1][3] + prices[i]);}return dp[lens - 1][4];}
};

優化代碼

class Solution {
public:int maxProfit(vector<int>& prices) {int fstBuy = INT_MIN, fstSell = 0;int secBuy = INT_MIN, secSell = 0;for (int p: prices) {fstBuy = max(fstBuy, -p);fstSell = max(fstSell, fstBuy + p);secBuy = max(secBuy, fstSell - p);secSell = max(secSell, secBuy + p);}return secSell;}
};

188. 買賣股票的最佳時機 IV

上一題的一般化,分好奇偶即可:

class Solution {
public:int maxProfit(int k, vector<int>& prices) {if (prices.empty()) return 0;int lens = prices.size();int wide = 2 * k + 1;vector<vector<int>> dp(lens, vector<int> (wide, 0));for (int j=0; j<wide; ++j) if (j % 2 == 1) dp[0][j] = -prices[0];for (int i=1; i<lens; ++i) {dp[i][0] = dp[i-1][0];for (int j=1; j<wide; ++j) {if (j % 2 == 1) dp[i][j] = max(dp[i-1][j], dp[i-1][j-1] - prices[i]);else if (j % 2 == 0) dp[i][j] = max(dp[i-1][j], dp[i-1][j-1] + prices[i]);}}return dp[lens - 1][wide - 1];}
};

309. 最佳買賣股票時機含冷凍期

dp數組含義

本題中每天可能的狀態有三種:

  • 持有股票
  • 不持有股票,今天賣出,后一天為冷凍期
  • 不持有股票,非今天賣出,后一天不為冷凍期

dp[i][j]dp[i][j]dp[i][j] 表示第 iii 天結束后,在第 jjj 中狀態下的最大收益

遞推公式

  • 當日結束后為持有股票狀態時,即 dp[i][0]dp[i][0]dp[i][0] ,可能由以下情況推導而來:

    • 當日買入股票,今天不能是冷凍期, dp[i?1][2]?prices[i]dp[i-1][2]-prices[i]dp[i?1][2]?prices[i]
    • 之前就已經買入了股票,當日未進行操作:dp[i?1][0]dp[i-1][0]dp[i?1][0]

    則,dp[i][0]=max(dp[i?1][0],dp[i?1][2]?prices[i])dp[i][0]=max(dp[i-1][0],dp[i-1][2]-prices[i])dp[i][0]=max(dp[i?1][0],dp[i?1][2]?prices[i])

  • 當日賣出,即 dp[i][1]dp[i][1]dp[i][1]

    • 今天賣出,前一天必為持股狀態,dp[i?1][0]+prices[i]dp[i-1][0]+prices[i]dp[i?1][0]+prices[i]

    則,dp[i][1]=dp[i?1][0]+prices[i]dp[i][1]=dp[i-1][0]+prices[i]dp[i][1]=dp[i?1][0]+prices[i]

  • 非當日賣出,即 dp[i][2]dp[i][2]dp[i][2],可能由以下情況推導而來:

    • 前一日賣出,今日冷凍期,dp[i?1][1]dp[i-1][1]dp[i?1][1]
    • 非前一日賣出,今日非冷凍期:dp[i?1][2]dp[i-1][2]dp[i?1][2]

    dp[i][2]=max(dp[i?1][1],dp[i?1][2])dp[i][2]=max(dp[i-1][1],dp[i-1][2])dp[i][2]=max(dp[i?1][1],dp[i?1][2])

初始化:除了第一天就買股票 dp[0][0]=?prices[0]dp[0][0]=-prices[0]dp[0][0]=?prices[0] 外全 0。

遍歷順序:從前到后即可。

代碼

class Solution {
public:int maxProfit(vector<int>& prices) {int lens = prices.size();vector<vector<int>> dp(lens, vector<int> (3, 0));dp[0][0] = -prices[0];for (int i=1; i<lens; ++i) {dp[i][0] = max(dp[i-1][0], dp[i-1][2] - prices[i]);dp[i][1] = dp[i-1][0] + prices[i];dp[i][2] = max(dp[i-1][2], dp[i-1][1]);}return max(dp[lens - 1][1], dp[lens - 1][2]);}
};

714. 買賣股票的最佳時機含手續費

就加個手續費,和 122 區別不大。

dp數組含義

本題中每一天結束后有兩種狀態:持有股票和不持有股票

  • dp[i][0]dp[i][0]dp[i][0] 表示第 iii 天結束后處于持股狀態時的最大收益
  • dp[i][1]dp[i][1]dp[i][1] 表示第 iii 天結束后處于未持股狀態時的最大收益

遞推公式

  • 對于第 iii 天結束后,處于持股狀態,即 dp[i][0]dp[i][0]dp[i][0],可能由兩種狀態推導得到:

    • 前面買入,當日未進行操作:dp[i?1][0]dp[i-1][0]dp[i?1][0]
    • 當日買入,并支付手續費 dp[i?1][1]?prices[i]?feedp[i-1][1]-prices[i]-feedp[i?1][1]?prices[i]?fee

    則:dp[i][0]=max(dp[i?1][0],dp[i?1][1]?prices[i]?fee)dp[i][0]=max(dp[i-1][0],dp[i-1][1]-prices[i]-fee)dp[i][0]=max(dp[i?1][0],dp[i?1][1]?prices[i]?fee)

  • 對于第 iii 天結束后,處于未持股狀態,即 dp[i][1]dp[i][1]dp[i][1],可能由兩種狀態推導得到:

    • 一直未買入或前面已賣出,當日未進行操作:dp[i?1][1]dp[i-1][1]dp[i?1][1]
    • 當日賣:dp[i?1][0]+prices[i]dp[i-1][0]+prices[i]dp[i?1][0]+prices[i]

    則:dp[i][1]=max(dp[i?1][1],dp[i?1][0]+prices[i])dp[i][1]=max(dp[i-1][1],dp[i-1][0]+prices[i])dp[i][1]=max(dp[i?1][1],dp[i?1][0]+prices[i])

代碼

class Solution {
public:int maxProfit(vector<int>& prices, int fee) {int lens = prices.size();vector<vector<int>> dp(lens, vector<int> (2));dp[0][0] = -prices[0] - fee;for (int i=1; i<lens; ++i) {dp[i][0] = max(dp[i-1][0], dp[i-1][1] - prices[i] - fee);dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i]);}return dp[lens - 1][1];}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/532521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532521.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532521.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

建設專業化運維服務團隊必要性

信息系統的生命周期涵蓋&#xff1a;設計、開發、測試、部署上線、運行維護。其中&#xff0c;運行維護階段是信息系統生命周期中的關鍵環節&#xff0c;其執行效果直接影響系統是否能達到預期的運行目標。為了實現這個目標&#xff0c;我們必須建立一個以業務服務為導向的專業…

docker初探

docker初探 本文旨在介紹 docker 基本的安裝、常用命令和常見概念的辨析&#xff0c;方便新手入門和筆者日后查閱&#xff0c;大部分內容整理自互聯網&#xff0c;原出處在文中注明。 文章目錄docker初探docker安裝&#xff08;mac&#xff09;版本、信息相關命令version/info…

ubuntu安裝zsh、oh-my-zsh及常用配置

ubuntu安裝zsh、oh-my-zsh及常用配置 目前&#xff0c;ubuntu默認的shell是bash&#xff0c;但還有一種shell&#xff0c;叫做zsh它比bash更加強大&#xff0c;功能也更加完善&#xff0c;zsh雖說功能強大&#xff0c;但是配置比較復雜導致流行度不是很高 但是好東西終究是好…

Segmentaion標簽的三種表示:poly、mask、rle

Segmentaion標簽的三種表示&#xff1a;poly、mask、rle 不同于圖像分類這樣比較簡單直接的計算機視覺任務&#xff0c;圖像分割任務&#xff08;又分為語義分割、實例分割、全景分割&#xff09;的標簽形式稍為復雜。在分割任務中&#xff0c;我們需要在像素級上表達的是一張…

tensorboard報錯:ValueError Duplicate plugins for name projector 問題的出現及解決過程

tensorboard報錯&#xff1a;ValueError: Duplicate plugins for name projector 問題的出現及解決過程 記錄如題問題的出現及解決過程。 報錯命令及信息 筆者在終端調用 tensorboard 時&#xff1a; tensorboard --logdirruns/ --bind_all報錯&#xff1a; raise ValueEr…

發布自己的Python包(Pypi)

發布自己的Python包(Pypi) 我們經常使用 Pypi 來安裝包&#xff0c;但是有時候我們也想要發布自己的 Pypi 包&#xff0c;有可能我們寫了一個特別牛的包&#xff0c;也有可能我們只是想使用自己常用的一些輪子&#xff0c;可能這是我們日常編碼中很常用的一些輪子&#xff0c;…

Ubuntu PPA 使用指南

Ubuntu PPA 使用指南 轉自&#xff1a;https://zhuanlan.zhihu.com/p/55250294 一篇涵蓋了在 Ubuntu 和其他 Linux 發行版中使用 PPA 的幾乎所有問題的深入的文章。 如果你一直在使用 Ubuntu 或基于 Ubuntu 的其他 Linux 發行版&#xff0c;例如 Linux Mint、Linux Lite、Zorin…

如何在 Linux 中快速地通過 HTTP 提供文件訪問服務

如何在 Linux 中快速地通過 HTTP 提供文件訪問服務 轉自&#xff1a;https://linux.cn/article-10205-1.html 如今&#xff0c;我有很多方法來通過 Web 瀏覽器為局域網中的其他系統提供單個文件或整個目錄的訪問。我在我的 Ubuntu 測試機上測試了這些方法&#xff0c;它們如下面…

Linux apt命令

Linux apt命令及其與apt-get的關系 轉自&#xff1a;https://blog.csdn.net/taotongning/article/details/82320472、https://www.runoob.com/linux/linux-comm-apt.html apt&#xff08;Advanced Packaging Tool&#xff09;是一個在 Debian 和 Ubuntu 中的 Shell 前端軟件包管…

楊宏宇:騰訊多模態內容理解技術及應用

楊宏宇&#xff1a;騰訊多模態內容理解技術及應用 分享嘉賓&#xff1a;楊宇鴻 騰訊 內容理解高級工程師 編輯整理&#xff1a;吳祺堯 出品平臺&#xff1a;DataFunTalk 導讀&#xff1a; 搜索內容的理解貫穿了整個搜索系統。我們需要從多個粒度理解搜索內容&#xff0c;包括語…

git登錄相關操作梳理

git登錄相關操作梳理 本文主要基于 Linux/Mac &#xff0c;Windows下未經測試&#xff0c;不過估計差不多&#xff0c;在 git bash 內操作即可。 創建ssh key并關聯github等賬號 因為本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密傳輸的&#xff0c;GitHub需要識別是否是…

關于mmdetection上手的幾點說明

關于mmdetection上手的幾點說明 官方的文檔很有參考價值&#xff0c;并且也有中文版&#xff0c;應當是大家上手 mmdetection 的第一參考&#xff0c;本文是記錄一些筆者在小白階段上手 mmdetection 時的一些心得&#xff0c;這些東西沒有人提&#xff0c;可能是大佬們覺得這些…

docker gpu報錯Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]

Docker容器中使用Nvidia GPU報錯 docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]]. 問題出現 我們知道&#xff0c;想要在 docker19 及之后的版本中使用 nvidia gpu 已經不需要單獨安裝 nvidia-docker 了&#xff0c;這…

CUDA環境詳解

CUDA環境詳解 本文主要介紹 CUDA 環境&#xff0c;這一堆東西網上有很多博客介紹過了&#xff0c;我再來一篇:)&#xff0c;參考前輩們的文章&#xff0c;看能不能寫的更清楚一點。讀后仍有問題&#xff0c;歡迎留言交流。 CUDA APIs CUDA是由NVIDIA推出的通用并行計算架構&…

共享內存簡介及docker容器的shm設置與修改

共享內存簡介及docker容器的shm設置與修改 共享內存簡介 共享內存指 (shared memory)在多處理器的計算機系統中&#xff0c;可以被不同中央處理器&#xff08;CPU&#xff09;訪問的大容量內存。由于多個CPU需要快速訪問存儲器&#xff0c;這樣就要對存儲器進行緩存&#xff…

對Docker鏡像layer的理解

對Docker鏡像layer的理解 轉自&#xff1a;https://blog.csdn.net/u011069294/article/details/105583522 FROM python:3.6.1-alpine RUN pip install flask CMD [“python”,“app.py”] COPY app.py /app.py上面是一個Dockerfile的例子&#xff0c;每一行都會生成一個新的l…

ssh免密登錄配置方法及配置

ssh免密登錄配置方法及配置 直接上步驟&#xff0c;記我們本機為機器A&#xff0c;而機器B、機器C等是我們的服務器&#xff0c;我們要配置的是A到B、C等的 ssh 免密登錄。 1 在機器A上生成秘鑰對 ssh-keygen會得到輸出&#xff1a; Generating public/private rsa key pai…

機器學習系統:設計與實現 計算圖

機器學習系統:設計與實現 計算圖 轉自&#xff1a;https://openmlsys.github.io/chapter_computational_graph/index.html 在上一章節中&#xff0c;我們展示了用戶利用機器學習框架所編寫的程序。這些用戶程序包含了對于訓練數據&#xff0c;模型和訓練過程的定義。然而為了…

常見浮點數格式梳理

常見浮點數格式梳理 IEEE 754 標準 浮點數轉換網站&#xff1a;https://www.h-schmidt.net/FloatConverter/IEEE754.html IEEE二進制浮點數算術標準&#xff0c;為許多CPU與浮點運算器所采用。這個標準定義了表示浮點數的格式&#xff08;包括負零-0&#xff09;與反常值&am…

Python拾遺1:collections、itertools和內存io

Python拾遺1&#xff1a;collections、itertools和內存io 轉自&#xff1a;https://www.liaoxuefeng.com/wiki/1016959663602400 本系列旨在補充python中一些很好用但是并非常規課程主線中的知識。 collections collections是Python內建的一個集合模塊&#xff0c;提供了許…