LeetCode 869. 重新排序得到 2 的幂(排序 全排列)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 869. 重新排序得到 2 的幂(排序 全排列)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定正整數 N ,我們按任何順序(包括原始順序)將數字重新排序,注意其前導數字不能為零。
如果我們可以通過上述方式得到 2 的冪,返回 true;否則,返回 false。
示例 1: 輸入:1 輸出:true示例 2: 輸入:10 輸出:false示例 3: 輸入:16 輸出:true示例 4: 輸入:24 輸出:false示例 5: 輸入:46 輸出:true提示: 1 <= N <= 10^9來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reordered-power-of-2
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
2.1 排序
- 將數字轉成字符串,并排序
- 枚舉32位的所有2的次冪的數,轉字符串,并排序,跟上面字符串比較即可
2.2 全排列
class Solution {bool ans = false; public:bool reorderedPowerOf2(int N) {string origin(to_string(N));bt(origin,0);return ans;}void bt(string str, int i){if(ans == true || i == str.size())return;for(int j = i; j < str.size(); ++j){swap(str[i],str[j]);if(str[0]!='0' && isPowerTwo(stoi(str)))ans = true;bt(str,i+1);swap(str[i],str[j]);}}bool isPowerTwo(int n){return (n&(n-1)) == 0;} }; 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的LeetCode 869. 重新排序得到 2 的幂(排序 全排列)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员面试金典 - 面试题 02.06.
- 下一篇: LeetCode 229. 求众数 II