最重要的小事:輸入範圍


  1. 空間限制
  2. 時間限制
  3. 型態限制

空間限制

  • int : 4 bytes
  • double : 8 bytes
  • JS 中的 Number : 8 bytes

如果今天要用到一百萬個數字

(8*1e6)/ 1024 = 7812 KB = 7.6 MB
// 1e6 => 1 後面跟著 6 個 0

如果是要用到十億個數字

(8*1e8)/ 1024 = 781200 KB = 7600 MB = 7.4 GB 
// 要用到 7.4 GB 的記憶體,不是所有電腦都有那麼多記憶體

排序十萬個數字,可以全部載入到記憶體
但如果要排十億個數字呢?
不可能一次載入到記憶體,可能先把排好的一部分數字放在檔案裡,所以範圍決定解題方法

時間限制

初學先求有再求好,之後補充

型態限制

  • int : -2147483648 ~ 2147483647 (-2^31 ~ 2^31-1)
  • JS 數字 : Number.NAX_SAFE_INTEGER
  • 浮點數精準度問題






Related Posts

Day04 - CSS內距、邊框、輪廓與邊界範圍

Day04 - CSS內距、邊框、輪廓與邊界範圍

自學程式設計學習資源懶人包

自學程式設計學習資源懶人包

Airflow 動手玩:(四)淺談 Airflow 架構

Airflow 動手玩:(四)淺談 Airflow 架構

Web Component 實戰

Web Component 實戰

Google Cloud Source Repositories 使用紀錄

Google Cloud Source Repositories 使用紀錄

Day 1 - MongoDB 基礎

Day 1 - MongoDB 基礎



Comments