leetcode326.三的幂(342.四的幂/231.二的幂)

1.题目

给定一个整数,写一个函数来判断它是否是 3 的幂次方。

2.解题思路

看见这题我的第一个思路就是利用if来给予条件从而判断是否是三的幂次方。

bool isPowerOfThree(int n)
{
     if(n<=0)
         return false;
    if(n==1)
        return true;

接着对于三的幂次方的理解要有个注重点,就是三的幂次方代表一个数的因数只有三和一而不是仅仅能搞除以三就可以了。而且要注意三的零次方等于一很容易遗漏这个条件,这个条件也起到了分隔作用所以也要注意。n/3就是用来判断是否因数只有一和三。

 while(n>1)
    {
        if(n%3!=0)
            return false;
        n=n/3;
    }
    return true;

3.代码

bool isPowerOfThree(int n)
{
     if(n<=0)
         return false;
    if(n==1)
        return true;
    while(n>1)
    {
        if(n%3!=0)
            return false;
        n=n/3;
    }
    return true;
}

同类型题目

1.题目

给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。

2.解题思路

思路和三的幂次方相似,利用if来判断是否是四的幂次方,需要注意的点一个是四的零次方等于一返回true。

 if(num==1)
        return true;

另一个就是四的幂次方的定义就是一个数的因数只有一和四,所以num/4就是用来判断是否因数只有一和四。

while(num>1)
    {
        if(num%4!=0)
            return false;
        num=num/4;
    }

3.代码

bool isPowerOfFour(int num)
{
  if(num<=0)
         return false;
    if(num==1)
        return true;
    while(num>1)
    {
        if(num%4!=0)
            return false;
        num=num/4;
    }
    return true;
}

1.题目

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

2.解题思路

思路和三的幂次方相似,利用if来判断是否是二的幂次方,需要注意的点一个是二的零次方等于一返回true。

if(n==1)
        return true;

另一个就是二的幂次方的定义就是一个数的因数只有一和二,所以n/2就是用来判断是否因数只有一和二。

while(n>1)
    {
        if(n%2!=0)
            return false;
        n=n/2;
    }
    return true;

3.代码

bool isPowerOfTwo(int n)
{
  if(n<=0)
         return false;
    if(n==1)
        return true;
    while(n>1)
    {
        if(n%2!=0)
            return false;
        n=n/2;
    }
    return true;
}

原文地址:https://www.cnblogs.com/DCdc1230/p/11103140.html

时间: 2024-11-07 08:35:37

leetcode326.三的幂(342.四的幂/231.二的幂)的相关文章

[Wikioi 2808][NOIP 1998普及组]二的幂次方---HBNU的童鞋过来看看

转载请说明出处:http://blog.csdn.net/cywosp/article/details/27095723 <黑天鹅--如何应对不可预知的未来> 作者:纳西姆?尼古拉斯?塔勒布 关于黑天鹅 在发现澳大利亚黑天鹅之前,所有欧洲人都确信天鹅全部都是白色的,人们在经过上百万次的确定性观察白天鹅之后得到了这一结论,而且一直延续了上千年,直到黑天鹅的出现,从而将这一结论完全打破.通过黑白天鹅的现象说明我们通过观察或经验获得的知识具有严重的局限性和脆弱性,仅仅一次的完全不同的发现就足以颠覆根

第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理

第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字段的类型以及相关属性elasticsearch会根据json源数据的基础类型猜测你想要的字段映射,将输入的数据转换成可搜索的索引项,mapping就是我们自己定义的字段数据类型,同时告诉elasticsearch如何索引数据以及是否可以被搜索 作用:会让索引建立的更加细致和完善 类型:静态映射和动态

转载:CSS实现三栏布局的四种方法示例

转载网址:http://www.jb51.net/css/529846.html 前言 其实不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具体的介绍了三栏布局的四种方法,并介绍了它的使用场景. 所谓三栏布局就是指页面分为左中右三部分然后对中间一部分做自适应的一种布局方式. 1.绝对定位法 HTML代码如下: <div class="left&quo

TCP协议中的三次握手和四次挥手(图解)【转】

建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. [更新于2017.01.04 ]该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好.这么久才来更新,抱歉!! 错误配图如下: 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 那如何断开连接呢?

TCP/IP协议三次握手与四次握手流程解析

原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图 上图中有几个字段需要重点介绍下:   (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记.   (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1.   (3)标志位:共6个,即URG.ACK.PSH.RST

ubuntu/linux mint 创建proc文件的三种方法(四)

在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试. 大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法. 方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险): 方法二:使用proc_create和seq_file创建proc文件(较方法三简洁): 方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整): 示例四:在proc文件中使用内核链表的一个示例(用的方

三次握手、四次握手、backlog

TCP:三次握手.四次握手.backlog及其他 TCP是什么 首先看一下OSI七层模型: 然后数据从应用层发下来,会在每一层都加上头部信息进行封装,然后再发送到数据接收端,这个基本的流程中每个数据都会经过数据的封装和解封的过程,流程如下图所示: 在OSI七层模型中,每一层的作用和对应的协议如下图所示: 说回TCP,简单说TCP(Transmission Control Protocol)即传输控制协议,是一种面向连接的.可靠的.基于ip的传输层协议. TCP协议头部格式 要学习TCP协议,首先

TCP三次握手和四次挥手

TCP三次握手和四次挥手 在了解TCP三次握手和四次挥手之前我们先来了解一下TCP的标志位,这样有助于我们理解TCP三次握手和四次挥手的过程 TCP标志位: URG:表示TCP包的紧急指针域有效,用来保证TCP连接不被中断 ACK:表示确认序号有效 PSH:表示Push操作; 所谓Push操作就是指在数据包到达接收端以后, 立即传送给应用程序,不在缓冲区排队 RST:表示连接复位请求; 用来复位那些产生错误的连接 SYN:表示同步序号, 用来建立连接;SYN和ACK搭配使用,请求连接时,SYN=

TCP三次握手、四次挥手及状态转换图

TCP/IP通信的三次握手如下: TCP是主机对主机层的传输控制协议,提供可靠的连接服务: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) .ACK(acknowledgement 确认) .PSH(push传送). FIN(finish结束) .RST(reset重置) .URG(urgent紧急).Sequence number(顺序号码) .Acknowledge number(确认号码). 三次握手: 第一次握手:客户端发送syn包(syn=x)的数据包到服务器