397. 整數替換

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))  
相關文章
相關標籤/搜索