LeetCode *231.Power of Two (Python Solution)

本文介绍了一种高效判断整数是否为2的幂的方法,通过位运算、二进制计数及直接除法三种技巧实现。利用位运算的特性,检查整数n及其减一后的值进行按位与运算的结果是否为0;通过计算二进制表示中1的个数判断;或使用最大2的幂进行取模运算。

题目描述

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

给定一个整数,写一个函数来确定它是否是2的幂。

Example 1:

Input: 1
Output: true
Explanation: 20 = 1

Example 2:

Input: 16
Output: true
Explanation: 24 = 16

Example 3:

Input: 218
Output: false


Python Solution

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n > 0 and n & (n - 1) == 0

分析: 整数包含正数和负数,但负数很明显不是2的幂,所以先进行判断。其次利用位运算,易知 为2的幂的数n 表达为二进制都是一个 1 后面加不同个数的 0 ,所以 (n - 1) 则为全部都为 1 的数。故 n 和 (n - 1) 做与运算 之后的结果各位都应该为 0 。和 0 比较即可。

如果不用位运算的思想,仅仅作为笔试题为了AC而不是面试题,也可以这么判断:

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n > 0 and  bin(n).count('1) == 1

还没完还没完,接下来:

炫技时刻

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n > 0 and 1073741824 % n == 0

其实也还好哈哈,只是 1073741824 是int范围内最大的2 的整数次幂。

代码下载链接: https://pan.quark.cn/s/a4b39357ea24 全球数据治理的发展趋势; 数据合规相关的法规标准以及重点案例的收集; 数据安全领域的标准与产业应用实践; 数字转型时代中数据流转所面临的风险控制; 运用人工智能技术进行的大数据安全保障; 各类厂商提供的数据安全防护措施; 完整的数据治理总体方案; 针对数据安全的治理解决方案; 【行业权威机构推荐】数据安全治理的建设指导手册; 企业数据防止信息泄露的体系化咨询服务完整资料; 阿里云在大数据安全方面的实践经验分享; 大数据安全等级保护过程中遇到的挑战及应对策略; 以风险为基础的数据完整性管理实践指导文件; 数据安全管理的相关法规条例; CSA组织发布的大数据安全与隐私保护手册中文翻译版本; GDPR框架下的数据合规性要求; 通过数据资产管理视角探讨数据安全监管; 大数据安全治理的汇编资料(共计四篇); 大数据安全的相关标准规范; 大数据应用场景中的隐性隐私安全隐患; 大数据应用环境下的隐私保护及风险控制技术; 数字化时代背景下的隐私保护策略; 等级保护2.0标准下的数据安全解决方案; 国际上通用的数据管理能力成熟度评估模型; 华为公司在大数据安全管理方面的实践经验; 企业数据安全能力体系框架_数据安全能力成熟度模型的构建与实际应用; 企业数据管理领域的理论知识和实践操作; 从零开始构建企业数字化运营全流程白皮书; 数据安全领域的权威白皮书; 数据安全能力建设的实施指导手册; 数据安全治理领域的白皮书及配套演示文稿; 数据安全治理的具体实施方案; 数据安全的多维度综合防御体系; 数据跨境传输的安全解决方案; 数据安全治理的技术支撑架构; 金融行业数据安全治理模型及实践案例; 涵盖但...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值