應用題 判斷輸入是否為4^k Leetcode 342: Power of Four

閱讀時間約 2 分鐘

題目敘述

這題的題目會給我們一個輸入整數,要求我們判斷這個整數是否可以用4^k 的形式來表達?

詳細的題目可在這裡看到


測試範例

Example 1:

Input: n = 16
Output: true

Example 2:

Input: n = 5
Output: false

Example 3:

Input: n = 1
Output: true

約束條件

Constraints:

  • -231 <= n <= 231 - 1

 

Follow up: Could you solve it without loops/recursion?


演算法

除了比較直覺的不斷除以四,判斷是否能剛好整除4的相除法之外。

class Solution:
 def isPowerOfFour(self, num):
  
  while num > 1:
   if num % 4 != 0:
    return False
   
   num /= 4

  return num == 1


還有位元操作結合同餘3的判斷法。

首先,先排除小於等於0的整數,因為<=0的整數不可能是4^k。


4^k一定是2的冪,也一定可以用2^n次方來表達。

接著,用num bitwiseAND (num-1) == 0 去判斷是否為2^n。
(這是因為二進位表達式中,2^k只會有一個bit1出現)


最後,用同餘的關係,4^k mod 3 = (3+1)^k mod 3 = 1^k mod 3 = 1 判斷整除3是否同餘1。假如是,那麼這個輸入整數就可以用4^k形式來表達。


程式碼


class Solution:
    def isPowerOfFour(self, n: int) -> bool:
        return n > 0 and (n & (n - 1)) == 0 and (n % 3 == 1)

複雜度分析

時間複雜度:

O( 1 ) 固定長度32bits的位元操作,和mod 3同餘1的判斷

空間複雜度:

O(1) 都是固定尺寸的臨時變數,所占用的記憶體空間為常數級別。


Reference

[1] Python O( log n ) sol. based on bit-manipulation, run time 90%+ - Power of Four - LeetCode

52會員
339內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
0926如何解決「數學應用問題」亂寫 昨天進行一個小考,來檢視學生學習的成效如何。發現,應用問題有「亂寫」狀況。「亂寫」,只是表示學生寫錯,不是計算錯誤那種類型,而是被除數跟除數搞錯。 心想著,除了重新檢討這個數學問題的意思之外,還有什麼是老師可以做的,來幫助學生更能理解數學。晚上睡前,就胡思亂想了起來。
avatar
Injay Haung
2023-09-25
題目:AI在生活中的應用和介紹幾款AI的APAI的簡介:人工智能(Artificial Intelligence,簡稱AI)已經深入我們的日常生活,改變了我們的生活方式,並為我們帶來了更多便利。這篇文章將探討人工智能在生活中的多個應用,並簡單介紹幾款具有代表性的AI應用程序,讓你更了解這項令人振奮的AI技術。
Thumbnail
avatar
莊智涵
2023-08-28
程式題目練習:怎麼判斷質數?如何把觀念應用到題目,用程式解決問題?文組生的自學程式之路|芽芽的程式之旅從跟著教學影片把老師的程式抄過一遍,變成看到題目能把題目轉為程式,對於初學者來說蠻困難的。所以我想以初學者的角度來分享自己怎麼適應這段轉換的過程,以及我解題的方法是什麼。(也順便紀錄一下自己的思路) ※主題:流程控制為主的綜合小應用 ※題目:讓使用者輸入一個數字,並用程式判斷該數字是否為質數
Thumbnail
avatar
芽芽|生活體驗家
2023-08-20
ChatGPT出世後的反思:課堂上的提問技巧與應用在ChatGPT橫空出世的當下😮,如何提一個好問題或是下一個好指令,成為人們的新技能🎯,但是身為老師的您,真的會問好問題嗎🤔?還有良好的提問技巧您掌握住了嗎🎓? 在課堂上,問題提問是一個重要的環節,有助於引導學生思考和參與🌟。 以下是一些常用的提問公式,以及在課堂上的應用和範例📚。
Thumbnail
avatar
小豬老師
2023-04-30
國中會考國文科解題策略分析~(四.五)、詞性判斷在試題當中的應用雖然純詞性類已經淡出了會考選擇題的出題舞台,但在我的系統裡,詞性卻是重要的「解題武器」之一;這個武器的優勢是,他不是用事先背起來的、而是可以現場判斷,只要多加練習,有些題目「不用知道答案,也可以得分」。
Thumbnail
avatar
教國文的
2023-04-08
閱讀看人生|《高敏感者愛自己的19個練習》書摘及應用(美好提案篇)高敏感者保護自己、綻放光芒的具體方法及應用!
Thumbnail
avatar
陳穩
2022-09-29
AIoT數位轉型的法律議題(6)智慧機器人應用法制議題本文主要在講述人工智慧(Artificial Intelligence, AI)機器人風險管控的趨勢與研析,涉及每個國家的競爭力,尤其與AI機器人的政策與法制規範。
Thumbnail
avatar
建佑律師_NoMoreLaw
2021-08-17
怎麼用英日文把話題先止住,以後再講?有時遇到對方喋喋不休,你很想拿一塊布把對方的嘴塞起來。或者你當下很忙,實在沒時間聽對方講話。這時候你會說「我們先停一下晚點再講好不好?」英日文會怎麼說呢?
Thumbnail
avatar
你的英日語自學導師 譯難忘  ོꦿ༄꧁꧂
2021-04-19
解『我想改變』這數學應用題:3個邏輯9個方法 改變讓你變更優秀,誰不想啊,可【改變真難】!難在你沒有『對方法』讓改變變得【好玩】、【輕鬆做到】 為甚麼老是改不了? 人是一種感性為主的動物,在人的大腦住了兩個象,1是大象,2是騎象人,大象是感性的,騎象人是理性。 當你要選擇時 這兩個象在看甜品吃/不吃,流口水的大象告訢自己:快拿起來吃啊
Thumbnail
avatar
LilyG莉莉兒
2021-01-27