題目出處
3727. Maximum Alternating Sum of Squares
難度
medium
題目分類
Array, Greedy, Sorting
2026-10-13 一刷
個人範例程式碼 - 一刷 (2026/10/13)
class Solution:
def maxAlternatingSum(self, nums: List[int]) -> int:
abs_nums = []
for num in nums:
abs_nums.append(abs(num))
abs_nums.sort(reverse=True)
mid = (len(nums) - 1) // 2
ans = 0
for i in range(len(abs_nums)):
# ex: len = 4, mid = 1, add i = 0, 1
# ex: len = 5, mid = 2, add i = 0, 1, 2
# ex: len = 6, mid = 2, add i = 0, 1, 2
if i <= mid:
ans += abs_nums[i] ** 2
else:
ans -= abs_nums[i] ** 2
return ans
算法說明
數學題目,計算奇偶性。例如:
- 當 len = 4, idx = 0, 1 取 mid = (len - 1) // 2 = 1, 然後注意 <= mid
- 當 len = 5, idx = 0, 1, 2 取 mid = (len - 1) // 2 = 2, 然後注意 <= mid
- 當 len = 6, idx = 0, 1, 2 取 mid = (len - 1) // 2 = 2, 然後注意 <= mid
Time Complexity
O(nlogn) # sort
Space Complexity
O(n)