869. 重新排序得到 2 的幂

枚举排列,然后验证。比较暴力。

其实好一点的做法应该反过来,先把int范围下的2的N幂算出来,然后一个一个验证给出的数能不能拼成。

class Solution {public Integer[] nextPermutation(Integer[] nums) {if (nums.length == 1) {return new Integer[]{};}int p = -1;for (int i = nums.length - 2; i >= 0; i--) {if (nums[i] < nums[i + 1]) {p = i;break;}}if (p != -1) {int tmp = nums[p];int q = nums.length - 1;while (nums[q] <= tmp) {q--;}nums[p] = nums[q];nums[q] = tmp;reverse(p + 1, nums);} else {return new Integer[]{};}return nums;}public void reverse(int k, Integer[] nums) {if (k >= nums.length) return;int i = k;int j = nums.length - 1;while (i < j) {int tmp = nums[i];nums[i] = nums[j];nums[j] = tmp;i++;j--;}}public boolean reorderedPowerOf2(int N) {if (N == 0) {return false;}String s = Integer.toString(N);int[] p = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};for (int i = 0; i < s.length(); i++) {p[s.charAt(i) - '0']++;}List<Integer> list = new ArrayList<>();for (int i = 0; i < 10; i++) {for (int j = 0; j < p[i]; j++) {list.add(i);}}Integer[] nums = list.stream().toArray(Integer[]::new);StringBuilder origin = new StringBuilder();for (int i = 0; i < nums.length; i++) {origin.append(nums[i]);}while (nums[0] == 0) {nums = nextPermutation(nums);}int flag = 0;while (true) {if (nums.length == 0) {break;}StringBuilder st = new StringBuilder();for (int i = 0; i < nums.length; i++) {st.append(nums[i]);}Integer num = Integer.valueOf(st.toString());double ans = Math.log(num) / Math.log(2);if (isNotDouble(ans)) {return true;}nums = nextPermutation(nums);}return false;}public static boolean isNotDouble(Double x) {int i = x.intValue();return x - i < 0.000001;}}

这周周赛就做出来这两个。。。水平还是太低啊,哎

转载于:https://www.cnblogs.com/acbingo/p/9312214.html

[leetcode] (周赛)869. 重新排序得到 2 的幂相关推荐

  1. 869. 重新排序得到 2 的幂

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

  2. LeetCode 869. 重新排序得到 2 的幂(排序 全排列)

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

  3. Leecode 869. 重新排序得到 2 的幂——Leecode每日一题系列

    题目链接:https://leetcode-cn.com/problems/reordered-power-of-2/ 题目 给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导 ...

  4. [LeetCode周赛复盘] 第 89 场双周赛20221015

    [LeetCode周赛复盘] 第 89 场双周赛20221015 一.本周周赛总结 二. [Easy] 6208. 有效时间的数目 1. 题目描述 2. 思路分析 3. 代码实现 三.[Medium] ...

  5. C/C++描述 LeetCode 周赛 第199场周赛(阿里云专场)

    C/C++描述 LeetCode 周赛 第199场周赛(阿里云专场)   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN ...

  6. [LeetCode周赛复盘] 第 314 场周赛20221009

    [LeetCode周赛复盘] 第 314 场周赛20221009 一.本周周赛总结 二. [Easy] 6201. 找出前缀异或的原始数组 1. 题目描述 2. 思路分析 3. 代码实现 三.[Eas ...

  7. leetcode周赛5465. 子树中标签相同的节点数

    leetcode周赛5465. 子树中标签相同的节点数 给你一棵树(即,一个连通的无环无向图),这棵树由编号从 0 到 n - 1 的 n 个节点组成,且恰好有 n - 1 条 edges .树的根节 ...

  8. 我也是LeetCode周赛“三道题选手”啦 第270场周赛

    第270场周赛小结 我的Weekly Contest 270战况 什么是LeetCode周赛? show my code! 复盘解决Hard题 我的Weekly Contest 270战况 参加周赛有 ...

  9. [LeetCode周赛复盘] 第 324 场周赛20221218

    [LeetCode周赛复盘] 第 324 场周赛20221218 一.本周周赛总结 二. [Easy] 6265. 统计相似字符串对的数目 1. 题目描述 2. 思路分析 3. 代码实现 三.[Med ...

  10. [LeetCode周赛复盘] 第 310 场周赛20220911

    [LeetCode周赛复盘] 第 310 场周赛20220911 一.本周周赛总结 二. [Easy] 6176. 出现最频繁的偶数元素 1. 题目描述 2. 思路分析 3. 代码实现 三.[Medi ...

最新文章

  1. 太赞了!机器学习基础核心算法:贝叶斯分类!(附西瓜书案例及代码实现)
  2. 03-----数据类型
  3. 解决 WIn7 启动时“你有等待写入光盘的文件”
  4. Linux系统时间和时序,什么是时序竞态 Linux系统时序竞态问题分析
  5. IJCAI 2021 | 中科院计算所:自监督增强的知识蒸馏方法
  6. ISA2006无人值守安装
  7. vue中引入外部文件js、css、img的方法
  8. python数据包头_Python爬虫-请求响应包头
  9. 长沙火宫殿城大庙会迎客 演绎传统与潮流交融
  10. 想通过C++寻找后端开发工作如何提升自己?
  11. 解释OBJECT_ID和OBJECTPROPERTY
  12. 事务的acid属性是指_Mysql事务的性质 为什么要用事务?
  13. ORACEL使用脚本来修改表结构
  14. udev   ksm
  15. 正确解决:关于Lattic Diamond软件注册不成功(license问题)
  16. linux pt 客户端,下载工具系列——rTorrent (轻量级优秀BT/PT客户端)
  17. [cryptoverse ctf 2022] cvctf
  18. 微信公众号网页授权登陆
  19. 我的世界php motd,我的世界MOTD攻击服务器 频繁发送请求
  20. MemSQL性能测试结果

热门文章

  1. flAbsPath on /var/lib/dpkg/status failed - realpath
  2. 以自己范例,说明如何写操作文档
  3. 百度地图与高德地图比较
  4. C# dataGridView控件 控件中至少有一列没有模板问题【解决】 添加新列
  5. GitHub 和GitLab的开发工具使用
  6. 华为5500v3多路径linux6,CentOS7 DM-Multipath+HUAWEI OceanStor存储多路径配置
  7. 新版手机浏览器_简约但不“简单”的手机浏览器
  8. 服务器修改lang值,golang设置http response响应头与填坑记录
  9. C#Redis 事务操作
  10. Spring Boot Controller层单元测试