日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

397. 整数替换

發(fā)布時(shí)間:2023/11/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 397. 整数替换 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

397. 整數(shù)替換

給定一個(gè)正整數(shù) n ,你可以做如下操作:

如果 n 是偶數(shù),則用 n / 2替換 n 。
如果 n 是奇數(shù),則可以用 n + 1或n - 1替換 n 。
n 變?yōu)?1 所需的最小替換次數(shù)是多少?

示例 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

解題思路

利用隊(duì)列實(shí)現(xiàn)廣度優(yōu)先搜索,按照操作次數(shù)進(jìn)行入隊(duì)操作,每次同一批出隊(duì)的,都是具有相同操作次數(shù)的,因此我們可以根據(jù)出隊(duì)的批次,得出轉(zhuǎn)化為1的操作次數(shù),每次對于出隊(duì)的元素判斷其奇偶性,如果 n 是偶數(shù),則將 n / 2入隊(duì) 。如果 n 是奇數(shù),則將 n + 1和n - 1入隊(duì)。使用set記錄已經(jīng)遍歷過的數(shù)字,防止重復(fù)。直到我們隊(duì)頭元素出現(xiàn)1,那么當(dāng)前出隊(duì)的批次則是最小的替換次數(shù)

代碼

class Solution { public:int integerReplacement(int n) {queue<long> q;set<long> seen;seen.insert(n);q.push(n);int res(0);while (!q.empty()){int size=q.size();for (int i = 0; i < size; ++i) {long cur=q.front();if (cur==1)return res;q.pop();if (cur%2==0){if (!seen.count(cur/2)){q.push(cur/2);seen.insert(cur/2);}}else {if (!seen.count(cur+1)){q.push(cur+1);seen.insert(cur+1);}if (!seen.count(cur-1)){q.push(cur-1);seen.insert(cur-1);}}}res++;}return 0;} };
  • 時(shí)間復(fù)雜度:O(log?n)O(\log{n})O(logn)
  • 空間復(fù)雜度:O(log?n)O(\log{n})O(logn)

或者根據(jù)題意直接進(jìn)行遞歸

class Solution { public:int integerReplacement(int n) {if (n==1)return 0;if (n==INT_MAX)return 32;if (n%2==0)return integerReplacement(n/2)+1;else return min(integerReplacement(n+1),integerReplacement(n-1))+1;} };
  • 時(shí)間復(fù)雜度:O(?log?n)O(\phi ^{\log n})O(?logn),其中 ?=1+52≈1.618\phi = \dfrac{1+\sqrt{5}}{2} \approx 1.618?=21+5??1.618表示黃金分割比。

  • 空間復(fù)雜度:O(log?n)O(\log n)O(logn)。每一次遞歸都會(huì)將 n 減小一半,因此需要 $O(\log n) $的棧空間。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/integer-replacement
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

總結(jié)

以上是生活随笔為你收集整理的397. 整数替换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。