问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3858 访问。

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

输入: 1

输出: true

解释: 20 = 1

输入: 16

输出: true

解释: 24 = 16

输入: 218

输出: false


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

Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3858 访问。

public class Program {public static void Main(string[] args) {var n = 8;var res = IsPowerOfTwo(n);Console.WriteLine(res);n = 513;res = IsPowerOfTwo2(n);Console.WriteLine(res);Console.ReadKey();}private static bool IsPowerOfTwo(int n) {//先看原值是否能被2整除//若不能整除,不是2的幂;//若能整除,继续往下,直接<=1时为止//最后判断值是否为1即可while(n % 2 == 0 && (n /= 2) > 1) { }return n == 1;}private static bool IsPowerOfTwo2(int n) {//2为10,4为100//2-1为01,4-1为011//对它们进行“与”运算//10 & 01 = 0//100 & 011 = 0//得出结论,如果一个数n为2的幂,则n & (n - 1) = 0return ((n > 0) && (n & (n - 1)) == 0);}}

以上给出2种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3858 访问。

True
False

分析:

显而易见,IsPowerOfTwo 的时间复杂度为:  ,IsPowerOfTwo2 的时间复杂度为:  。

C#LeetCode刷题之#231-2的幂(Power of Two)相关推荐

  1. leetcode刷题笔记342 4的幂

    题目描述: 给定一个整数 (32位有符整数型),请写出一个函数来检验它是否是4的幂. 示例: 当 num = 16 时 ,返回 true . 当 num = 5时,返回 false. 问题进阶:你能不 ...

  2. C#LeetCode刷题-位运算

    位运算篇 # 题名 刷题 通过率 难度 78 子集 67.2% 中等 136 只出现一次的数字 C#LeetCode刷题之#136-只出现一次的数字(Single Number) 53.5% 简单 1 ...

  3. C#LeetCode刷题-数学

    数学篇 # 题名 刷题 通过率 难度 2 两数相加 29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 (a ...

  4. LeetCode刷题笔记汇总

    LeetCode刷题笔记汇总 第一次刷LeetCode写的一些笔记. 1.两数之和 3.无重复字符的最长子串 15.三数之和 18.四数之和 19.删除链表的倒数第 N 个结点 20.有效的括号 21 ...

  5. LeetCode刷题Python实录

    使用Python的LeetCode刷题 前言 题目 1408. 数组中的字符串匹配 508. 出现次数最多的子树元素和 1089. 复写零 剑指 Offer 14- I. 剪绳子 1175. 质数排列 ...

  6. LeetCode 刷题之路(python版)

    摘自:https://blog.csdn.net/qq_32384313/article/details/90745354 LeetCode 刷题之路(python版) 小坏wz 2019-06-02 ...

  7. 个人LeetCode刷题记录(带题目链接及解答)持续更新

    Leetcode 刷题 注:~[完成]代表还有一些方法没看,最后再看 一.一些需要重刷的典型题: 1.快速排序,归并排序,堆排序(递归的思想) 2.链表中的回文链表,其中的快慢指针,多看,多练 3.链 ...

  8. ​LeetCode刷题实战50:Pow(x, n)

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  9. LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)

    LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...

  10. LeetCode刷题记录14——257. Binary Tree Paths(easy)

    LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...

最新文章

  1. Windows 外壳扩展编程入门实例
  2. oracle批次处理数据_Oracle大批量删除数据方法(转)
  3. MySQL+Amoeba实现数据库主从复制和读写分离
  4. Python标准库--time模块的详解
  5. 深入Session2
  6. Java NIO框架 Mina、Netty、Grizzly
  7. poj 2485 Highways 超级大水题 kruscal
  8. 玩转RecyclerView | 实现子视图叠加 | 3D画廊效果 | 高级动效 | Android 3D坐标系介绍
  9. TSMaster1.4.2补丁包发布
  10. FIR内插滤波器的FPGA实现(一)-matlab实现
  11. python+django大学生专业社团信息管理系统
  12. Android 10.0 Activity启动详解(二)
  13. phpstorm破解后,运行一段时间后突然有提示没有破解.
  14. 报错Failure executing javac, but could not parse the error原因分析
  15. FreeNOS-kernel目录下boot.S、链接脚本kernel.ld文件分析(四)
  16. 立创开源 BGA221芯片开发
  17. BMS 产品控制策略和整车交互策略
  18. 联想r720自带杜比驱动下载_暑假追剧补习神器,联想M10 PLUS评测
  19. 计算机毕业论文Java项目源码下载javaweb图书借阅管理系统
  20. rm 命令删除除指定文件外的所有文件,非常简单

热门文章

  1. 机器学习速成课程 | 练习 | Google Development——编程练习:稀疏数据和嵌套简介
  2. 数据结构学不会?视频+项目+网站大全,还有独家学习方法
  3. 1107班12月第5周 班级计划 为s1结业答辩做准备
  4. css 盒模型 0302
  5. 办公自动化-演练-统计日报的演练-0223
  6. python-两种办法验证数据的类型
  7. Android进阶:自定义视频播放器开发(下)
  8. codeforce 804B Minimum number of steps
  9. FusionCharts-堆栈图、xml格式、刷新数据、添加事件link、传参
  10. Zabbix监控指定端口的步骤