文章
时间轴
标签
音乐室
友人帐
一刻时光
清单
留言板
相册
算法海洋
关于
Slcpの童话镇 🏰
写文章
869. 重新排序得到 2 的幂
中等
数据结构与算法
原题链接
发布日期:
2023年03月13日
文章字数:
5.1k
阅读次数:
471
阅读时长:
0小时0分0秒
![image-20230316114454891](https://img.slcp.top/image-20230316114454891.png) ## 解题思路 - 对于任何一个数,都由`0-9`组成,因此我们可以使用一个`new int[10]` 来记录每个数字的出现次数,然后把他们组合成一个字符串,则这个字符串就能标识唯一的一个数 - 因为` 1 <= N <= 10^9 `,所以每个数字的出现次数必然小于`10`次,不会出现类似`SQL`注入那种混淆的问题 - `static`静态`HashSet`存储`1-10^9`内所有`2`的幂的字符串 > 复杂度分析 时间复杂度:`O(logn)`。统计 n 的每个数字的出现次数需要的时间。 空间复杂度:`O(1)` ## 代码 ~~~java class Solution { static HashSet<String> set = new HashSet<>(); static{ for(int i = 1 ; i <= 1000000000 ; i*=2){ set.add(helper(i)); } } public boolean reorderedPowerOf2(int n) { String s = helper(n); return set.contains(s); } public static String helper(int n){ int[] nums = new int[10]; while(n > 0){ nums[n%10]++; n/=10; } StringBuilder sb = new StringBuilder(); for(int i : nums){ sb.append(i); } return sb.toString(); } } ~~~
您阅读这篇文章共耗时:
0小时16分34秒
文章链接:
https://www.slcp.top/article/read/1636265214651727874
版权声明:
本博客所有文章除特別声明外,均采用
CC BY 4.0
许可协议。转载请注明来源
Slcp
!
转载文章以及部分引用均为自己整理记录学习而用,若有侵权,请联系删除。
数据结构与算法
评论
Valine
Gitalk
目录
搜索
首页
前进
后退
刷新
申请友链
在线联系