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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文巾解题 342. 4的幂

發布時間:2025/4/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文巾解题 342. 4的幂 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 題目描述

2 解題思路

2.1 方法1 判斷log函數的結果是不是整數

class Solution:def isPowerOfFour(self, n: int) -> bool:if(n<=0):return Falsetmp=math.log(n,4)return(tmp==int(tmp))

2.2 方法2 不斷除4

只要能被4整除,就不斷除4,直到不能除為止,判斷是否為1

class Solution:def isPowerOfFour(self, n: int) -> bool:if(n<=0):return Falsewhile(n%4==0):n=n//4return(n==1)

2.3? 位運算

如果 n?是 4 的冪,那么 n 一定也是 2 的冪。

因此我們可以首先判斷 n 是否是 2 的冪,在此基礎上再判斷 n 是否是 4 的冪。

判斷 n 是否是 2 的冪可以參考文巾解題 231. 2的冪_劉文巾的博客-CSDN博客

如果 n?是 4 的冪,那么 n 的二進制表示中有且僅有一個 1,并且這個 1 出現在從低位開始的第偶數個二進制位上(這個 1?后面必須有偶數個 0)。這里我們規定最低位為第 0 位,例如 n=16 時,n 的二進制表示為(10000)。唯一的 1?出現在第 4 個二進制位上,因此 n 是 4?的冪。

由于題目保證了 n?是一個 32 位的有符號整數,因此我們可以構造一個整數 mask,它的所有偶數二進制位都是 1,所有奇數二進制位都是 0。這樣一來,我們將 n 和mask 進行按位與運算,如果結果為 n,說明 n?二進制表示中的 1出現在偶數的位置,此時n是4的冪;否則說明其出現在奇數的位置。

根據上面的思路,mask 的二進制表示為0b1010101010101010101010101010101

?

class Solution:def isPowerOfFour(self, n: int) -> bool:if(n<=0):return Falseif(n&(n-1)!=0):return False#如果都不是2的冪,那么更不是4的冪mask=0b1010101010101010101010101010101if(n& mask==n):return Trueelse:return False

2.4? mod 3

如果?n?是?4?的冪,那么它可以表示成?的形式,我們可以發現它除以?3?的余數一定為?1,即:

如果n是2的冪,但不是4的冪,那么它可以表示成?的形式,此時它除以?3?的余數一定為?2。

class Solution:def isPowerOfFour(self, n: int) -> bool:if(n<=0):return Falseif(n&(n-1)!=0):return False#如果都不是2的冪,那么更不是4的冪if(n%3==1):return Truereturn False

?

總結

以上是生活随笔為你收集整理的文巾解题 342. 4的幂的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。