1. 題目描述spa
給定一個正整數 n,你能夠作以下操做:code
1. 若是 n 是偶數,則用 n / 2替換 n。
2. 若是 n 是奇數,則能夠用 n + 1或n - 1替換 n。
n 變爲 1 所需的最小替換次數是多少?blog
示例 1:遞歸
輸入:
8io
輸出:
3class
解釋:
8 -> 4 -> 2 -> 1
示例 2:di
輸入:
7co
輸出:
4return
解釋:
7 -> 8 -> 4 -> 2 -> 1
或
7 -> 6 -> 3 -> 2 -> 1
2. 思路
遞歸。能被2整除確定優先整除,這樣步驟會少一些。
3. 實現
class Solution: def integerReplacement(self, n: int) -> int: if n==1: return 0 if n%2==0: return 1+self.integerReplacement(n//2) else: return min(1+self.integerReplacement(n+1), 1+self.integerReplacement(n-1))