397 整數替換

2021-10-11 18:05:27 字數 895 閱讀 8615

題目描述:

給定乙個正整數 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答案...