博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode刷题231 2的幂 Power of Two(简单) Python Java
阅读量:4129 次
发布时间:2019-05-25

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

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

示例 1:

输入: 1输出: true解释: 2的0次方 = 1

示例 2:

输入: 16输出: true解释: 2的4次方 = 16

示例 3:

输入: 218输出: false

思路1:如果每次将这个数除以2没有余数,直到得到数字1,那么这个数就是2的若干次幂。

class Solution(object):    def isPowerOfTwo(self, n):        """        :type n: int        :rtype: bool        """        if n < 1:            return False        while n%2 == 0:            n /= 2        return True if n==1 else False

思路2:2的幂次 x 表示成二进制一定是一个1后面若干个0,那么 如果将这个数减去1x-1, 一定是一个0后面若干个1,所以对这两个数按位相与,必为0,即 x & (x-1) = 0 ,非2的幂无法得到0。

class Solution(object):    def isPowerOfTwo(self, n):        """        :type n: int        :rtype: bool        """        return n > 0 and not (n & n-1)

 

以下是Java版本:

题目大意:

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

解题思路:

如果一个整数是2的幂,那么它的二进制形式最高位为1,其余各位为0

等价于:n & (n - 1) = 0,且n > 0

比较简单,就是移位判断一下二进制数一共有多少个1,如果只有一个,那就是2的幂次方啦

1.	public class Solution {  2.	    public boolean isPowerOfTwo(int n) {  3.	        int sum = 0;  4.	        if(n <= 0){  5.	            return false;  6.	        }  7.	        for(int i = 0;i < 32;i++){  8.	            sum += (n>>>i)&1;  9.	        }  10.	        return (sum == 1? true:false);  11.	    }  12.	}

利用2的幂 其二进制上的特点,来进行判断; 2^n在二进制上都是1000...0(n个零的特点)  减去1,二进制上就会变成1111....111(n个零)

//例如,8的二进制是10007的二进制是0111,相与为0

1.	public class Solution {  2.	    public boolean isPowerOfTwo(int n) {  3.	       return n > 0 && (n & (n - 1)) == 0;  4.	    }  5.	}

 

转载地址:http://lsuvi.baihongyu.com/

你可能感兴趣的文章
手机助手(三):自定义属性 + 飞入飞出
查看>>
手机助手(四):复杂的ListView + 自定义控件
查看>>
手机助手(五):模块化开发 + nineOldAndroid.jar
查看>>
源码或学习网站
查看>>
手机助手(二):侧拉栏drawerLayout+Tab+Viewpager+ListView+Pulltorefresh+imageloder
查看>>
Android Studio BUG
查看>>
Android基础:Date & Time组件(上)
查看>>
Android基础:Date & Time组件(下)
查看>>
第三方开源库:日期时间选择器(TimePickerDialog)+ 省市区三级联动(CityPicker) + 一级滚动
查看>>
第三方开源库:OkHttp
查看>>
科研机构分析环境搭建
查看>>
二叉堆(优先队列)
查看>>
外存IO操作
查看>>
如何开发一个程序
查看>>
python初学
查看>>
实体消歧,实体识别,实体融合,知识融合概述
查看>>
Linux使用
查看>>
scala初学
查看>>
Majority Element
查看>>
LeetCode感想
查看>>