[筆記] [ALG101] 與 [CS101] unit 7 雜記
快速記下一些重看 [ALG101] 的小細節
[ALG101] 雜記
log 小技巧
let arr = [2, 7, 5] |
fizz Buzz 解法研究
大小寫轉換
有三種解法:
- ASCII code
- 比較字典序。例:z > b,k > g……
- 內建
.toUpperCase()
或.toLowerCase()
幾個水桶
翻成數學問題就是:將一個 10 進位的數字轉換為 2 進位,並輸出此二進位數字包含幾個 1
有上過課馬上就能聯想到這個解法,我第一次解的時候是用題目給的上限值開始往下取,先找到最大的 2 的 x 次方數,減去後再繼續往下取。
大數字如何處理
如何處理超過 MAX_SAFE_INTEGER 的數字?MDN 就有說了:
For larger integers, consider using BigInt.
印出金字塔/印出聖誕樹
還是花了快一個小時才解出來,放到 LIOJ 上還是 AC,但是寫出來的 Code 比第一次在 LIOJ 上面解出來的還要噁心……
印出平方數
兩種解法:
- 檢查每一個數字被開根號後是否為整數。
- 從 1 開始計算每個數的平方,一直到大於所求範圍結束。
[CS101] 火球術 unit 7 雜記
排序法
select
遍歷陣列,找到最小與第一位交換,再找第二小與第二位交換、第三小與第三位交換……類推
bubble
兩兩比較,較大放右邊,較小放左邊
insertion
將前兩位先按順序放好,第三位起與前面數字比大小,大於第二位則放至第三位,大於第一位、小於第二位則放至第二位,小於第一位則放至第一位。第四位與前面數字比大小,大於第三位則放至第四位,大於第二位小於第三位則放至第三位……類推
merge
切半、切半、再切半!合併、合併、再合併!
quick
先將第一個數字設定為基準點(piviot),尋找比它小的數字,第一個找到的調換到它旁邊,第二個找到的調換到第一個的旁邊……類推。一直到找不到比較小的數字後,將第一個數字與最後一個找到的數字對調。
持續進行這個動作,直到每個數字歸位。
用文字敘述實在很不容易想像,還是上 VISUALGO 看動畫吧!