iT邦幫忙

2026 iThome 鐵人賽

DAY 24
1
Software Development

快樂演算法系列 第 24

搭火車真的看到農噴機working好大及噴灑比想像廣 & 55 v2

  • 分享至 

  • xImage
  •  
  1. nums[i] = 站在index i時,最多可以往右跳幾格。

  2. Time O(n)->for最多把nums的每個index看一次;
    Space O(1)->不管nums多大,都只多用farthest、current這幾個固定變數。

  3. 不是平行處理:farthest 會一路依賴前面掃描結果,標準解是單一路徑線性掃描。它快的原因是「每個元素只看一次」,不是因為 parallelism(平行化)

4.compare最小的 O(n²):

for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
        // work
    }
}

若 n = 3:
i=0 → j=0,1,2 → 3 次
i=1 → j=0,1,2 → 3 次
i=2 → j=0,1,2 → 3 次 總共 3 × 3 = 9 次 -> n × n = n² 每一個元素,又把全部元素重新看一次。

Complexity n=3 的直覺工作量
O(1) 1 直接取一次
O(log n) 約2 每次砍一半,Binary Search
O(n) 3 全部走一次,優先追求
O(n log n) 約5 常見於高效排序 如下
O(n²) 9 每個元素又掃全部,盡量避免

5.Merge Sort(合併排序) 很典型就是 O(n log n)。[4, 1, 3, 2]先一直切半:
→ [4,1] [3,2]
→ [4] [1] [3] [2]
每次都砍一半,層數大約是:log₂4 = 2;每一層合併時,全部元素大約都會被看一次
每層O(n)×總共 log n 層=O(n log n)
所以大約4 × 2 = 8 次量級。之後Merge Sort、Heap Sort 再細拆就好。

6.log₂4 = 2 裡:
底數2:代表每次切成 2 份/每次除以 2
4是原本有4個元素
答案 2 是:要切幾次才會從 4 變成 1
4 → 2 → 1
1 2

7.每層 O(n):這一輪總共要處理4個元素
總共log n層:這種「處理全部元素的一輪」要做 幾輪

第 1 層:處理 4 個→ [4,1] [3,2]
第 2 層:還是總共處理 4 個→ [4] [1] [3] [2]

每層處理量 = n = 4;層數 = log₂4 = 2
n = 每一輪有多少東西要處理;log n = 總共要做幾輪。


上一篇
遇到五百了why & 322 v3 & 55
下一篇
線上點餐,每次要點一道菜都要重頭找到尾就是n*n &55v3
系列文
快樂演算法25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
AndyAWD
iT邦研究生 5 級 ‧ 2026-09-12 23:56:20

今天的又看不懂了,演算法越來越不快樂

歡迎提問 我會再努力的

我要留言

立即登入留言