【Leetcode】python - [3727] Maximum Alternating Sum of Squares 個人解法筆記

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

題目出處

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

算法說明

數學題目,計算奇偶性。例如:

  1. 當 len = 4, idx = 0, 1 取 mid = (len - 1) // 2 = 1, 然後注意 <= mid
  2. 當 len = 5, idx = 0, 1, 2 取 mid = (len - 1) // 2 = 2, 然後注意 <= mid
  3. 當 len = 6, idx = 0, 1, 2 取 mid = (len - 1) // 2 = 2, 然後注意 <= mid

Time Complexity

O(nlogn) # sort

Space Complexity

O(n)

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