切換
舊版
前往
大廳
主題

LeetCode - 326. Power of Three 解題心得

Not In My Back Yard | 2020-10-02 00:00:04 | 巴幣 2 | 人氣 271

題目連結:


題目意譯:
給定一整數 n ,撰寫一個函式去判斷該數是否為 3 的冪次。

進階:
你可以在不使用任何迴圈、遞迴結構下做出來嗎?



範例測資:
範例 1:
輸入: 27
輸出: true

範例 2:
輸入: 0
輸出: false

範例 3:
輸入: 9
輸出: true

範例 4:
輸入: 45
輸出: false


解題思維:
如果單純使用迴圈或是遞迴結構,則當 n 是 3 的倍數(這邊的前提是 n > 0),會將數字 n 除以 3 然後重複直到 n 不是 3 的倍數。此時如果 n = 1 則代表其為 3 的冪次;反之,則不是。

反過來想,因為 n 的型態是一個 32 位元有號整數,因此它會是 3 的冪次只有以下 20 種情形:
1
3
9
27
81
243
729
2187
6561
19683
59049
177147
531441
1594323
4782969
14348907
43046721
129140163
387420489
1162261467
其中,最大的是 1162261467 這個數字,而比它小的冪次都會整除它。



因此,我們可以將此函式直接寫成一個短短的判斷式:
(n > 0) && (1162261467 % n == 0)
其中「%」代表取餘的操作。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作