題目出處
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-index:算因數的時候,nums 取值時要記得 -1 idx
- 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