Skip to content

Latest commit

 

History

History

1780

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Given an integer n, return true if it is possible to represent n as the sum of distinct powers of three. Otherwise, return false.

An integer y is a power of three if there exists an integer x such that y == 3x.

 

Example 1:

Input: n = 12
Output: true
Explanation: 12 = 31 + 32

Example 2:

Input: n = 91
Output: true
Explanation: 91 = 30 + 32 + 34

Example 3:

Input: n = 21
Output: false

 

Constraints:

  • 1 <= n <= 107

Companies:
Microsoft

Related Topics:
Math, Backtracking, Recursion

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/check-if-number-is-a-sum-of-powers-of-three/
// Author: github.com/lzl124631x
// Time: O(log_3^N)
// Space: O(1)
class Solution {
public:
    bool checkPowersOfThree(int n) {
        while (n % 3 == 0 || (n % 3 == 1 && n != 1)) {
            if (n % 3 == 1) n -= 1;
            n /= 3;
        }
        return n == 1;
    }
};