【Leetcode】python - [2778] Sum of Squares of Special Elements 個人解法筆記

整理 LeetCode #2778 的個人解法筆記:解題思路、Time/Space Complexity 與邊界條件。

題目出處

2778. Sum of Squares of Special Elements

難度

easy

題目分類

Array, Enumeration

2026-10-11 一刷

個人範例程式碼 - 一刷 (2026/10/11)

class Solution:
    def sumOfSquares(self, nums: List[int]) -> int:
        ans = 0
        n = len(nums)
        i = 1
        while i * i <= n:
            if n % i == 0:
                ans += nums[i - 1] ** 2
                if n // i != i: # prevent duplicate
                    ans += nums[n//i - 1] ** 2
            i += 1
        return ans

算法說明

找因數的變形題目,主要細節處理要留意:

  1. 1-index:算因數的時候,nums 取值時要記得 -1 idx
  2. n 為完全平方數時(如 n=1、n=4 的 i=2),i 與 n // i 相同,要避免重複計算。

註:這題目由於是 easy,題目條件有說 n 上限為 50,基本上 O(n) 掃一次絕對足夠。
這裡的取 i * i <= n,等於只算 n^(1/2) 次已經是優化後的解。

Time Complexity

O(n^(1/2))

Space Complexity

O(1)

Boundary conditions

留意只有單一數字的情況,例如 [5] 答案為 25

Licensed under CC BY-NC-SA 4.0
最後更新 Oct 11, 2026
使用 Hugo 建立
主題 Stack 由 Jimmy 設計