北京互联网营销重庆seo管理平台
北京互联网营销,重庆seo管理平台,网站发布方式 提高,苏州建网站提题目连接#xff1a;https://leetcode-cn.com/problems/reordered-power-of-2/
题目分析
如果直接顺着题目的思路#xff0c;得到数字n的全排列#xff0c;然后再去判断其是不是2的幂是比较复杂的。 我们应该注意到#xff0c;因为数字是可以随意排列的#xff0c;因此所…题目连接https://leetcode-cn.com/problems/reordered-power-of-2/
题目分析
如果直接顺着题目的思路得到数字n的全排列然后再去判断其是不是2的幂是比较复杂的。 我们应该注意到因为数字是可以随意排列的因此所有可以通过变换排列得到的数字都有相同个数的0、1、2而n⩽1e9n\leqslant1e9n⩽1e92的幂只有30个左右我们可以先记录2的幂次然后再判断当前数字是不是和这些数字有相同的数字组合。
AC代码
class Int {static constexpr int MAXN 10;
public:explicit Int(int x 0);arrayint, MAXN cnt;friend bool operator (const Int lhs, const Int rhs);
};Int::Int(int x):cnt({0}) {while (x) {cnt[x % 10];x / 10;}
}bool operator (const Int lhs, const Int rhs) {return lhs.cnt rhs.cnt;
}void init(vectorInt pow) {constexpr int MAXN 1e9;int x 1;while (x MAXN) {pow.emplace_back(x);x 1;}
}class Solution {
public:bool reorderedPowerOf2(int n) {vectorInt pow;init(pow);Int nn(n);for (auto integer : pow) {if (integer nn) return true;}return false;}
};题解分析
刚开始的时候考虑要不要使用二分查找但是觉得这样的话还得排序还得预处理每次运行样例的时候都得处理一遍好像意义不大。
看了一下题解发现题解在全局进行预处理使用了匿名函数第一次在C里面见到这样使用匿名函数的确很方便。
int i []() - int {cout Hello world endl;return 0;
}();并且题解将数字映射成了一个字符串这样就可以使用unorder_map进行O(1)O(1)O(1)查询感觉还是很巧妙的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/87742.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!