【lc刷题】231/326/342 2的幂/3的幂/4的幂_Day39(112-114/300)

112-114/300

2的幂

  1. 2的幂
    给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
     
    示例 1:
     
    输入: 1
    输出: true
    解释: 20 = 1
     
    示例 2:
     
    输入: 16
    输出: true
    解释: 24 = 16
     
    示例 3:
     
    输入: 218
    输出: false

在这里插入图片描述


class Solution:
    def isPowerOfTwo_01(self, n: int) -> bool:
        return n > 0 == (n & -n) ^ n 

'''
bin(32) = 100000
bin(31) = 011111

32 & 31 = 0
'''        

    def isPowerOfTwo_02(self, n: int) -> bool:
        return n > 0 == n & n-1

3的幂

  1. 3的幂
    给定一个整数,写一个函数来判断它是否是 3 的幂次方。
     
    示例 1:
     
    输入: 27
    输出: true
     
    示例 2:
     
    输入: 0
    输出: false
     
    示例 3:
     
    输入: 9
    输出: true
     
    示例 4:
     
    输入: 45
    输出: false
    进阶:
    你能不使用循环或者递归来完成本题吗?

在这里插入图片描述

class Solution:
    def isPowerOfThree_01(self, n: int) -> bool:
        
        while n > 0 == n%3:
            n/=3
        return n == 1

    def isPowerOfThree_02(self, n: int) -> bool:
        i = 0
        while True:
            x = 3**i
            if x == n: return True
            elif x < n: i += 1
            else: return False
'''
32-bit integer:
3**19 < (2**31-1) < 3**20 
'''            
    def isPowerOfThree_03(self, n):
        return n > 0 == 3**19 % n 

4的幂

  1. 4的幂
     
    给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
     
    示例 1:
     
    输入: 16
    输出: true
     
    示例 2:
     
    输入: 5
    输出: false
    进阶:
    你能不使用循环或者递归来完成本题吗?

在这里插入图片描述


class Solution:
    def isPowerOfFour_01(self, num: int) -> bool:
        while num > 0 == num%4:
            num/=4
        return num == 1

    def isPowerOfFour_02(self, num: int) -> bool:
        return num & num-1 == 0 == (num-1) % 3 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值