LeetCode: 869. Reordered Power of 2

LeetCode: 869. Reordered Power of 2

题目描述

Starting with a positive integer N, we reorder the digits in any order (including the original order) such that the leading digit is not zero.

Return true if and only if we can do this in a way such that the resulting number is a power of 2.

Example 1:

Input: 1
Output: true

Example 2:

Input: 10
Output: false

Example 3:

Input: 16
Output: true

Example 4:

Input: 24
Output: false

Example 5:

Input: 46
Output: true

Note:

1 <= N <= 10^9

解题思路 —— 深度优先搜索

通过深度优先搜索遍历所有排列的可能性,然后将其转换为二进制数,如果转换的二进制数只有一个 1 则是二的倍数。

AC 代码

class Solution {
    bool dfs(string curNum, string& N)
    {
        if(curNum.size() == N.size())
        {
            int num = stoi(curNum);
            int cntOne = 0;
            while(num)
            {
                cntOne += num%2;
                num /= 2;
            }
            if(cntOne == 1) return true;
            else return false;
        }
        for(int i = 0; i < N.size(); ++i)
        {
            if(N[i] < 0) continue;
            if(curNum.size() == 0 && N[i] == '0') continue;

            curNum.push_back(N[i]);
            N[i] = -N[i];
            if(dfs(curNum, N) == true) return true;
            curNum.pop_back();
            N[i] = -N[i];
        }
        return false;
    }
public:
    bool reorderedPowerOf2(int N) {
        string strN = to_string(N);
        return dfs("", strN);
    }
};
全部评论

相关推荐

03-31 14:46
已编辑
门头沟学院 Web前端
励志成为双港第一ja...:这其实很正常,离的太远了,他认为你不会来,就为了混个面试,而且成本很高,实习生都优先选本地高校。吃了地域的亏,所有很多时候地域可能比院校层次更重要。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务