Tesla 的演算法面試注重動態規劃和貪心思維。本文通過最少操作次數問題,展示如何在面試中從暴力遞迴優化到動態規劃,oavoservice 助你掌握優化技巧。
📋 題目描述
給定一個整數 n,你可以進行以下操作:
- 如果
n是偶數,可以除以 2。 - 如果
n是奇數,可以加 1 或減 1。
返回 n 變為 1 所需的最少操作次數。
範例:
Input: n = 15
Output: 5
Explanation: 15 -> 16 -> 8 -> 4 -> 2 -> 1
🎯 核心考點
- 動態規劃 - 最優子結構
- 貪心策略 - 局部最優選擇
- 位運算優化 - 高效判斷奇偶
- 記憶化搜尋 - 避免重複計算
💡 解題思路(oavoservice 指導)
方法一:遞迴 + 記憶化
def minOperations(n, memo={}):
if n == 1:
return 0
if n in memo:
return memo[n]
if n % 2 == 0:
result = 1 + minOperations(n // 2, memo)
else:
result = 1 + min(
minOperations(n + 1, memo),
minOperations(n - 1, memo)
)
memo[n] = result
return result
時間複雜度: O(log n) 空間複雜度: O(log n)
方法二:貪心(最優)
對於奇數,應該 +1 還是 -1?
- 如果
n二進位結尾是01,-1後能被 4 整除。 - 如果
n二進位結尾是11,+1後能被 4 整除(3 除外)。
def minOperations_greedy(n):
ops = 0
while n > 1:
if n % 2 == 0:
n //= 2
else:
if n == 3 or n % 4 == 1:
n -= 1
else:
n += 1
ops += 1
return ops
時間複雜度: O(log n) 空間複雜度: O(1)
💼 oavoservice 助力
規律發現 - 幫你快速找到最優策略 優化指導 - 從暴力到最優的完整路徑 程式碼實作 - 確保程式碼簡潔高效 追問準備 - 各種變體問題的應對
聯繫 oavoservice,我們提供專業的 VO 面試輔助服務!
標籤: #Tesla #動態規劃 #貪心演算法 #位運算 #VO輔助 #面試輔助 #一畝三分地
需要面試真題? 立刻聯繫微信 Coding0201,獲得真題。