跳到主要内容

869.重新排序得到2的幂

链接:869.重新排序得到2的幂
难度:Medium
标签:哈希表、数学、计数、枚举、排序
简介:给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。

题解 1 - typescript

  • 编辑时间:2021-10-28
  • 执行用时:2416ms
  • 内存消耗:61.5MB
  • 编程语言:typescript
  • 解法介绍:dfs。
function reorderedPowerOf2(n: number): boolean {
const chars = n.toString().split('');
const len = chars.length;
const list: number[] = [];
const set = new Set<number>();
dfs();
return list.some(num => (num & (num - 1)) === 0);
function dfs(num = 0) {
if (set.size === len) {
list.push(num);
return;
}
for (let i = 0; i < len; i++) {
if (set.has(i)) continue;
const ch = chars[i];
if (num === 0 && ch === '0') continue;
set.add(i);
dfs(num * 10 + ch.codePointAt(0)! - '0'.codePointAt(0)!);
set.delete(i);
}
}
}