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);
}
}
}