326. Power of Three

Easy

Given an integer, write a function to determine if it is a power of three.

Example 1:

Input: 27
Output: true

Example 2:

Input: 0
Output: false

Example 3:

Input: 9
Output: true

Example 4:

Input: 45
Output: false

Follow up:
Could you do it without using any loop / recursion?

package leetcode.easy;

public class PowerOfThree {
public static void main(String[] args) {
PowerOfThree sol = new PowerOfThree();
int iterations = 1000000; // See table header for this value
long startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < iterations; i++) {
sol.isPowerOfThree1(i);
}
long endTime = System.currentTimeMillis(); // 获取结束时间
System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); // 输出程序运行时间 startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < iterations; i++) {
sol.isPowerOfThree2(i);
}
endTime = System.currentTimeMillis(); // 获取结束时间
System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); // 输出程序运行时间 startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < iterations; i++) {
sol.isPowerOfThree3(i);
}
endTime = System.currentTimeMillis(); // 获取结束时间
System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); // 输出程序运行时间 startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < iterations; i++) {
sol.isPowerOfThree4(i);
}
endTime = System.currentTimeMillis(); // 获取结束时间
System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); // 输出程序运行时间
} public boolean isPowerOfThree1(int n) {
if (n < 1) {
return false;
} while (n % 3 == 0) {
n /= 3;
} return n == 1;
} public boolean isPowerOfThree2(int n) {
return Integer.toString(n, 3).matches("^10*$");
} public boolean isPowerOfThree3(int n) {
return (Math.log10(n) / Math.log10(3)) % 1 == 0;
} public boolean isPowerOfThree4(int n) {
return n > 0 && 1162261467 % n == 0;
} @org.junit.Test
public void test() {
System.out.println(isPowerOfThree1(27));
System.out.println(isPowerOfThree1(0));
System.out.println(isPowerOfThree1(9));
System.out.println(isPowerOfThree1(45));
System.out.println(isPowerOfThree2(27));
System.out.println(isPowerOfThree2(0));
System.out.println(isPowerOfThree2(9));
System.out.println(isPowerOfThree2(45));
System.out.println(isPowerOfThree3(27));
System.out.println(isPowerOfThree3(0));
System.out.println(isPowerOfThree3(9));
System.out.println(isPowerOfThree3(45));
System.out.println(isPowerOfThree4(27));
System.out.println(isPowerOfThree4(0));
System.out.println(isPowerOfThree4(9));
System.out.println(isPowerOfThree4(45));
}
}

LeetCode_326. Power of Three的更多相关文章

  1. 一起学微软Power BI系列-使用技巧(5)自定义PowerBI时间日期表

    1.日期函数表作用 经常使用Excel或者PowerBI,Power Pivot做报表,时间日期是一个重要的纬度,加上做一些钻取,时间日期函数表不可避免.所以今天就给大家分享一个自定义的做日期表的方法 ...

  2. 一起学微软Power BI系列-使用技巧(4)Power BI中国版企业环境搭建和帐号问题

    千呼万唤的Power BI中国版终于落地了,相信12月初的微软技术大会之后已经铺天盖地的新闻出现了,不错,Power BI中国版真的来了,但还有些遗憾,国际版的一些重量级服务如power bi emb ...

  3. 一起学微软Power BI系列-使用技巧(3)Power BI安卓手机版安装与体验

    Power BI有手机版,目前支持安卓,苹果和WP,不过没有WP手机,苹果在国内还不能用,要FQ和用就不测试了.安卓的我也也是费了九牛二虎之力才把app下载下来,把方法分享给大家. FQ太麻烦,所以建 ...

  4. Power BI官方视频(3) Power BI Desktop 8月份更新功能概述

    Power BI Desktop 8月24日发布了更新版本.现将更新内容翻译整理如下,可以根据后面提供的链接下载最新版本使用. 1.主要功能更新 1.1 数据钻取支持在线版 以前的desktop中进行 ...

  5. 一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库

    说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂吐槽,特别是那个.NET驱动和链接字符串,特别奇葩.总归是和其他数据库不一样,标新立异,不知道为何.另外 ...

  6. 千呼万唤始出来,微软Power BI简体中文版官网终于上线了,中文文档也全了。。

    前几个月时间,研究微软Power BI技术,由于没有任何文档和资料,只能在英文官网瞎折腾,同时也发布了英文文档的相关文章:系列文章,刚好上周把文章发布完,结果简体中文版上线了.哈哈,心里有苦啊,早知道 ...

  7. 微软新神器-Power BI横空出世,一个简单易用,还用得起的BI产品,你还在等什么???

    在当前互联网,由于大数据研究热潮,以及数据挖掘,机器学习等技术的改进,各种数据可视化图表层出不穷,如何让大数据生动呈现,也成了一个具有挑战性的可能,随之也出现了大量的商业化软件.今天就给大家介绍一款逆 ...

  8. 免费的精品: Productivity Power Tools 动画演示

    Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...

  9. 微软Power BI技术文章与资源目录

    下面是本博客原创的微软Power BI技术相关文章,对于部分转载文章和资源,会注明出处. 本博客将发布基于微软Power BI相关的基础入门文章,视频教程等资源,敬请关注. 个人建立的Power BI ...

随机推荐

  1. nodejs查看本机hosts文件域名对应ip

    const dns = require('dns') dns.lookup('domainName', function(err, result) { console.log(result) }) r ...

  2. c# 自动将string字符串转成实体属性的类型

    Convert.ChangeType() 看到.net webapi中有[FromUri]来接收参数  可以将自动参数转换成字段属性的类型 baidu 了许多文章 都在自己造轮子  突然发下微软提供了 ...

  3. AtCoder Grand Contest 016题解

    传送门 \(A\) 直接枚举最终的字母然后模拟就行了-- 就这数据范围还是别学我写的这种做法了-- const int N=105; char s[N];int las[26],mx[26],n,re ...

  4. LOJ2434. 「ZJOI2018」历史 [LCT]

    LOJ 思路 第一眼看似乎没有什么思路,试着套个DP上去:设\(dp_x\)表示只考虑\(x\)子树,能得到的最大答案. 合并的时候发现只有\(x\)这个点有可能做出新的贡献,而做出新贡献的时候必然是 ...

  5. vue-d2admin-axios异步请求登录,先对比一下Jquery ajax, Axios, Fetch区别

    先说一下对比吧 Jquery ajax, Axios, Fetch区别之我见 引言 前端技术真是一个发展飞快的领域,我三年前入职的时候只有原生XHR和Jquery ajax,我们还曾被JQuery 1 ...

  6. 使用Android的日志工具Log

    Android中的日志工具类是Log,这个类中提供了5个方法来供我们打印日志 1.Log.v()用于打印那些最为琐碎的,意义最小的日志信息.对应级别verbose,是Android日志里面级别最低的一 ...

  7. struts的带参数结果集

    action在forward过程中共享一个值栈,也就是一次request只有一个值栈,服务器端的forward对于客户端来说就是一次request,在forward过程就没必要再传参数了. 总结也就是 ...

  8. 2019年7月第一周总结-RabbitMQ总结

    这一周主要是对RabbitMQ做了一下学习. 快速阅读 RabbitMq的介绍以及环境安装配置,以及RabbitMq的六种应用 .单生产者和消费者, 单生产者多消费者,消息的发布订阅,消息类型Echa ...

  9. snprintf用错了快10年…

    int snprintf(char *str, size_t size, const char *format, ...); 从用snprintf开始,size参数一直传的都是buff_size-1, ...

  10. 【转】禁用chrome firefox 的 WebRTC功能防止真实IP泄漏

    无论是使用VPN还是其它代理方式,很多时候我们不希望暴露自己的真实IP,且一直以来我们认为VPN是安全的,所有流量都会走VPN. 但最近暴露出一个WebRTC特性,会暴露我们的真实IP.适用浏览器:c ...