LeetCode筆記:326. Power of Three

問題:

Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?

大意:

給出一個(gè)整數(shù)和措,寫一個(gè)函數(shù)來判斷它是否是3的次方數(shù)肥照。
進(jìn)階:
你能不能不用循環(huán)和遞歸來做波材?

思路:

一開始看這個(gè)題目沒明白是什么意思从藤,后來查了一下才知道是判斷是否3的次方數(shù),所謂次方數(shù)就是n個(gè)3相乘得出的數(shù)咯浸赫,總是容易想到立方上去肾请。這個(gè)題其實(shí)最簡單的就是不斷地除以3枉阵,直到結(jié)果為0,看有沒有余數(shù)技掏,有則不是铃将,沒有則是。這個(gè)做法無論是用循環(huán)還是遞歸都差不多哑梳,不過題目的進(jìn)階要求是不用循環(huán)與遞歸劲阎,這就要想辦法了。找了會(huì)規(guī)律并沒有找到鸠真,看了看別人的想法發(fā)現(xiàn)自己數(shù)學(xué)敏感性還是太差了悯仙,這直接可以轉(zhuǎn)換成求對數(shù)的計(jì)算:

n = 3^x
? log3(n) = x

要判斷給出的整數(shù)是不是3的立方數(shù),只用看x是不是整數(shù)就好了吠卷。而:

log3(n) = log10(n) / log10(3)

這里在做的時(shí)候我們直接用語言中的log函數(shù)去計(jì)算锡垄,但是要注意一點(diǎn),必須要使用log10這個(gè)函數(shù)祭隔,而不能用ln或者其他數(shù)字做底數(shù)的log函數(shù)货岭,否則在遇到243這個(gè)數(shù)字的時(shí)候會(huì)判斷錯(cuò)誤,我在這里也出了問題疾渴,這應(yīng)該是一個(gè)底層計(jì)算中的巧合千贯,在計(jì)算的時(shí)候:

log(243) = 5.493061443340548 log(3) = 1.0986122886681098
==> log(243)/log(3) = 4.999999999999999

log10(243) = 2.385606273598312 log10(3) = 0.47712125471966244
==> log10(243)/log10(3) = 5.0

由于我們的判斷依據(jù)是log后的結(jié)果是否是一個(gè)整數(shù),如果用其他數(shù)作為log的底數(shù)搞坝,那計(jì)算出來應(yīng)該是整數(shù)的243結(jié)果卻不是整數(shù)搔谴,因?yàn)橛?jì)算機(jī)在計(jì)算log(3)時(shí)實(shí)際上結(jié)果會(huì)稍微大一點(diǎn)點(diǎn),這就坑爹了桩撮,所以只能用log10己沛。

要判斷是不是整數(shù)很簡單,直接%1看余數(shù)是不是0就好了距境。另外別忘了還有n=0的初始情況要考慮在內(nèi)申尼。再有值得一提的就是Math并不需要額外import就可以直接使用

代碼(Java):

public class Solution {
    public boolean isPowerOfThree(int n) {
        return (n > 0 && (Math.log10(n) / Math.log10(3)) % 1 == 0);
    }
}

代碼(C++)

#include <cmath>
class Solution {
public:
    bool isPowerOfThree(int n) {
        if (n <= 0) {
            return false;
        }
        double x = log10(n) / log10(3);
        if (x - (int)x == 0) return true;
        return false;

    }
};

合集:https://github.com/Cloudox/LeetCode-Record


查看作者首頁

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市垫桂,隨后出現(xiàn)的幾起案子师幕,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霹粥,死亡現(xiàn)場離奇詭異灭将,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)后控,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門庙曙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浩淘,你說我怎么就攤上這事捌朴。” “怎么了张抄?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵砂蔽,是天一觀的道長。 經(jīng)常有香客問我署惯,道長左驾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任极谊,我火速辦了婚禮诡右,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轻猖。我一直安慰自己稻爬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布蜕依。 她就那樣靜靜地躺著桅锄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪样眠。 梳的紋絲不亂的頭發(fā)上友瘤,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音檐束,去河邊找鬼辫秧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛被丧,可吹牛的內(nèi)容都是我干的盟戏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼甥桂,長吁一口氣:“原來是場噩夢啊……” “哼柿究!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起黄选,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤蝇摸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體貌夕,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡律歼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啡专。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片险毁。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖们童,靈堂內(nèi)的尸體忽然破棺而出畔况,到底是詐尸還是另有隱情,我是刑警寧澤病附,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站亥鬓,受9級特大地震影響完沪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嵌戈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一覆积、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧熟呛,春花似錦宽档、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至九府,卻和暖如春椎瘟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侄旬。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工肺蔚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人儡羔。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓宣羊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汰蜘。 傳聞我的和親對象是個(gè)殘疾皇子仇冯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 一、題目 leetcode 上有這么一道題,power of three. 題目如下: Given an inte...
    cyang812閱讀 1,747評論 2 1
  • php -m windows 下查看php已開啟的拓展 GMP是The GNU MP Bignum Libra...
    jianghu000閱讀 2,335評論 0 0
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)族操。 張土汪:刷leetcod...
    土汪閱讀 12,724評論 0 33
  • 我和她發(fā)生了很多的事情 一開始我們關(guān)系還不錯(cuò) 后來由于一些意外以及我本人那時(shí)的一時(shí)小氣自私傲慢而做出了一些傷害她的...
    Sinner_REPENT閱讀 232評論 0 0
  • 1.bmob:后臺(tái)數(shù)據(jù)服務(wù)解決方案赞枕,不用管MySQL和Python了2.IQKeyBoardManager:解決輸...
    darling323閱讀 512評論 0 1