↓快轉到主要內容
  1. LeetCode/

LeetCode 2413: Smallest Even Multiple

·1 分鐘· ·
LeetCode Easy Math Number-Theory
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2025-12-17

  • 提交紀錄:Accepted(Python)→ Wrong Answer(C++)→ Accepted(C++)

解題思路
#

同時是 2 和 n 的倍數的最小正整數就是 lcm(2, n):

  • n 是偶數:n 本身就是 2 的倍數,答案是 n。
  • n 是奇數:gcd(2, n) = 1,答案是 2n。

我的嘗試
#

Python 一次 AC。改用 C++ 練習時,三元運算子的兩個分支寫反了:(n % 2) ? n : n * 2,n % 2 是 1(奇數)時回傳 n。例如 n = 5:答案是 10,回傳 5。

正確解法
#

class Solution:
    def smallestEvenMultiple(self, n: int) -> int:
        return n if n % 2 == 0 else 2 * n

複雜度
#

時間 O(1),空間 O(1)。

要特別避免的錯誤
#

  • n % 2 在奇數時是真值(1),條件寫成 n % 2 == 0 比較不會搞反。

面試口說整理
#

答案是 2 和 n 的最小公倍數:n 是偶數時就是 n,奇數時 2 和 n 互質,答案是 2n。時間 O(1)。

相關文章

LeetCode 258: Add Digits
·1 分鐘
LeetCode Easy Math Simulation Number-Theory
LeetCode 258 解題筆記:反覆把位數相加直到剩一位;O(1) 解法是 digital root:1 + (n - 1) % 9
LeetCode 1979: Find Greatest Common Divisor of Array
·1 分鐘
LeetCode Easy Math Number-Theory Gcd Array
LeetCode 1979 解題筆記:找出最小值和最大值,用輾轉相除法算 GCD
LeetCode 2235: Add Two Integers
·1 分鐘
LeetCode Easy Math
LeetCode 2235 解題筆記:回傳兩數相加;C++ 版本忘了分號編譯失敗一次
LeetCode 2709: Greatest Common Divisor Traversal
·2 分鐘
LeetCode Hard Math Number-Theory Union-Find Sieve Gcd Array
LeetCode 2709 解題筆記:任兩個 index 都能互通 ⇔ 全部在同一個連通塊;用 SPF 分解質因數,數字跟它的質因數在 Union-Find 裡合併;1 要特別處理
LeetCode 1304: Find N Unique Integers Sum up to Zero
·1 分鐘
LeetCode Easy Math Array
LeetCode 1304 解題筆記:放 1..n/2 和它們的相反數,兩兩抵銷;n 是奇數時再加一個 0
LeetCode 3622: Check Divisibility by Digit Sum and Product
·1 分鐘
LeetCode Easy Math
LeetCode 3622 解題筆記:算出位數和與位數積,判斷 n % (和 + 積) == 0;取模的方向不要寫反