博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 326 Power of Three(3的幂)(递归、Log函数)
阅读量:6594 次
发布时间:2019-06-24

本文共 1106 字,大约阅读时间需要 3 分钟。

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50540517

翻译

给定一个整型数,写一个函数决定它是否是3的幂(翻译可能不太合适……跟进:你是否可以不用任何循环或递归来完成。

原文

Given an integer, write a function to determine if it is a power of three.Follow up:Could you do it without using any loop / recursion?

分析

题意我其实不是满懂,比如说12到底可不可以呢?还是说只有:3、9、27、81这种才行呢?先写个简单的递归试试看吧。

bool isPowerOfThree(int n) {    if (n == 1) return true;    else if (n == 0) return false;    else if (n % 3 == 0)        return isPowerOfThree(n / 3);    else return false;}

提交成功了,那么自己用12作为参数来试试呢,发现返回false,那么就可以断定题意是上面我说的第二种了。

是否还记得log函数呢,之前有一道题遇到过,所以这次一下就想到了……

logn3

如果以12来计算的话:

log123=2.26186

int(log123)=2

log123int(log123)=0.26186

所以直接判断结果是否为0就好了……

bool isPowerOfThree(int n) {    double logAns= log(n) / log(3);                 return (logAns- int(logAns) == 0) ? true : false;}

然而这段代码提交后发现仍然是错误的,243在上面的代码中居然是false,打断点看看应该是由于精度问题,所以继续改改。

logn3=logn10log310

所以代码就出来了……

代码

class Solution {public:    bool isPowerOfThree(int n) {        double logAns = log10(n) / log10(3);        return (logAns - int(logAns) == 0) ? true : false;    }};
你可能感兴趣的文章
自制基于HMM的python中文分词器
查看>>
如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增锁定用户与解除锁定用户的功能...
查看>>
vue1.0 的过滤器
查看>>
如何删除anaconda
查看>>
Mybatis3.3——源码阅读笔记
查看>>
oracle中的trunc函数操作
查看>>
EventCache表太大, 怎么办?
查看>>
Top 10 mistakes in Eclipse Plug-in Development
查看>>
Directx教程(23) 简单的光照模型(2)
查看>>
Java 并发性和多线程
查看>>
IE6下frameset横向滚动条BUG
查看>>
Python线程专题9:线程终止与挂起、实用工具函数
查看>>
用ASP.NET Core 2.1 建立规范的 REST API -- 翻页/排序/过滤等
查看>>
哈默尔的核心竞争力--《可以量化的管理学》
查看>>
Unity中关于作用力方式ForceMode的功能注解
查看>>
view生命周期的一个找父类的控件的方法
查看>>
物理读之LRU(最近最少被使用)的深入解析
查看>>
写给将要毕业的学弟学妹们的感言
查看>>
mybatis-ehcache 用法配置备忘
查看>>