題目描述:
給定乙個正整數 n ,你可以做如下操作:
如果 n 是偶數,則用 n / 2替換 n 。
如果 n 是奇數,則可以用 n + 1或n - 1替換 n 。
n 變為 1 所需的最小替換次數是多少?
示例 1:
輸入:n = 8
輸出:3
解釋:8 -> 4 -> 2 -> 1
示例 2:
輸入:n = 7
輸出:4
解釋:7 -> 8 -> 4 -> 2 -> 1
或 7 -> 6 -> 3 -> 2 -> 1
示例 3:
輸入:n = 4
輸出:2
1 <= n <= 231 - 1
方法1:
主要思路:解題彙總
(1)遞迴;
(2)遞迴的終止條件為n==1,更新可能的最小值;
(3)當n為偶數時,只有一種可能的情形,既n除以2,同時增加一次操作;
(4)當n為奇數時,有兩種可能的情形,既n加一或n減一,同時增加一次操作;
class
solution
if(n&1)
else
}int
integerreplacement
(int n)
//儲存結果
int res=int_max;
int cur=0;
//當前的運算元
//遞迴
dfs(n,res,cur)
;return res;}}
;
397 整數替換
題目描述 給定乙個正整數 n,你可以做如下操作 1.如果 n 是偶數,則用 n 2替換 n。2.如果 n 是奇數,則可以用 n 1或n 1替換 n。問 n 變為 1 所需的最小替換次數是多少?可見,該題的難點在於n是奇數時,應該是n 1還是n 1。解法一 遞迴 當n 1時,return 0 將int...
LeetCode397 整數替換
原題目給定乙個正整數 n,你可以做如下操作 如果 n 是偶數,則用 n 2替換 n。如果 n 是奇數,則可以用 n 1或n 1替換 n。n 變為 1 所需的最小替換次數是多少?示例 1 輸入 8 輸出 3 解釋 8 4 2 1 示例 2 輸入 7 輸出 4 解釋 7 8 4 2 1 或7 6 3 2...
369,整數替換
給定乙個正整數 n,你可以做如下操作 1.如果 n 是偶數,則用 n 2替換 n。2.如果 n 是奇數,則可以用 n 1或n 1替換 n。n 變為 1 所需的最小替換次數是多少?示例 1 輸入 輸出 解釋 8 4 2 1 示例 2 輸入 輸出 解釋 7 8 4 2 1 或7 6 3 2 1 01答案...