「每日LeetCode」2021年10月28日

本文最后更新于:2023年3月19日 晚上

Lt869. 重新排序得到 2 的

869. 重新排序得到 2 的幂

给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。
如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。

示例 1:
输入:1 输出:true
示例 2:
输入:10 输出:false
示例 3:
输入:16 输出:true
示例 4:
输入:24 输出:false
示例 5:
输入:46 输出:true

提示:

  1. 1 <= N <= 10^9

思路

将 10^9 内的 2 的幂数 sort 后存为一个数组,将目标数 sort 后比较是否在数组内即可。

解答

1
2
3
4
5
6
7
8
9
10
11
12
/**
* @param {number} n
* @return {boolean}
*/
var reorderedPowerOf2 = function (n) {
const res = [
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768,
65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216,
33554432, 67108864, 134217728, 268435456, 536870912,
].map((num) => (num + "").split("").sort().join(""));
return res.includes((n + "").split("").sort().join(""));
};