Leetcode 2090 - K Radius Subarray Averages

題目

Problem#

給你一個整數陣列 nums 有 $n$ 個數字,和一個整數 $k$。對於 index $i$ 能覆蓋 $[i-k, i+k]$ 範圍,其範圍內的平均數為 $avg[i]$ 問你能不能求出這個陣列
如果涵蓋的範圍比 $n$ 大 ($2 \times k + 1 > n$) 或是其中超出 n 的 index ($i < 0$ or $i \ge n$),則該 $avg[i] = -1$

測資限制#

  • $1 \le n \le 10^5$
  • $0 \le \text{nums}[i], k \le 10^5$

想法#

可以枚舉每個 $i$ 直接去算範圍總和,然後求平均 $\mathcal{O}(n^2)$。求總和可以用前綴和(prefix sum),則複雜度可以在 $\mathcal{O}(n)$

  • 時間複雜度: $\mathcal{O}(n)$
  • 空間複雜度: $\mathcal{O}(n)$

AC Code#

賞析#

官方題解是雙指標去求總和 & 平均數,然後每次向右就加上最右邊的、減去最左邊的 時間$\mathcal{O}(n)$,空間$\mathcal{O}(1)$